CN117527610A - 一种基于ns3网络仿真平台的数据链仿真方法 - Google Patents

一种基于ns3网络仿真平台的数据链仿真方法 Download PDF

Info

Publication number
CN117527610A
CN117527610A CN202410014748.0A CN202410014748A CN117527610A CN 117527610 A CN117527610 A CN 117527610A CN 202410014748 A CN202410014748 A CN 202410014748A CN 117527610 A CN117527610 A CN 117527610A
Authority
CN
China
Prior art keywords
message
function
creating
subclass
class
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202410014748.0A
Other languages
English (en)
Other versions
CN117527610B (zh
Inventor
潘成胜
陆煌杰
王英植
石怀峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University of Information Science and Technology
Original Assignee
Nanjing University of Information Science and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing University of Information Science and Technology filed Critical Nanjing University of Information Science and Technology
Priority to CN202410014748.0A priority Critical patent/CN117527610B/zh
Publication of CN117527610A publication Critical patent/CN117527610A/zh
Application granted granted Critical
Publication of CN117527610B publication Critical patent/CN117527610B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/145Network analysis or design involving simulating, designing, planning or modelling of a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/16Time-division multiplex systems in which the time allocation to individual channels within a transmission cycle is variable, e.g. to accommodate varying complexity of signals, to vary number of channels transmitted
    • H04J3/1694Allocation of channels in TDM/TDMA networks, e.g. distributed multiplexers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明提出了一种基于NS3网络仿真平台的数据链仿真方法,包括:将Link‑16数据链整体模型拆分成不同功能的子模块,包括J系列消息生成处理子类、节点中继子类、NetDevice控制子类、队列组子类、TDMA系统子类、报文处理及信道控制子类和无线信道子类;分别创建J系列消息生成处理子类、节点中继子类、NetDevice控制子类、队列组子类、TDMA系统子类、报文处理及信道控制子类、无线信道子类;在NS3文件夹的scratch文件夹下创建Link‑16数据链的仿真脚本,对Link‑16数据链进行仿真。本发明通过NS3的软件框架和类,实现NS3网络仿真平台对Link‑16数据链的仿真。

Description

一种基于NS3网络仿真平台的数据链仿真方法
技术领域
本发明属于信息工程技术领域,具体涉及一种基于NS3网络仿真平台的数据链仿真方法。
背景技术
目前在网络仿真领域,已有许多学者借助NS2仿真软件、OPNET仿真软件和VRNET等网络仿真软件完成了对Link-16数据链模型的仿真,然而由于上述网络仿真软件自身结构框架的局限性,导致当前有关Link-16数据链的仿真方法的普适性大大降低。NS3(NetworkSimulatorVersion-3)作为一款免费开源的、综合了很多优秀模拟器特点的离散时间网络仿真模拟器,主要应用于网络仿真领域,提供了许多网络协议以及通信模型的同时也为网络开发者提供了大量的接口和基类,具有易扩展性和高集成性等特点,研究人员可根据自己的需要对网络仿真的同时还可以设计网络各层的算法和改善模型。然而,当前NS3官方所提供的模块库无法实现对Link-16数据链的仿真,从而导致基于NS3的Link-16数据链仿真受限。因此如何将NS3应用于Link-16数据链仿真是一个值得关注的问题。
发明内容
解决的技术问题:针对现有NS3网络仿真器无法实现Link-16数据链仿真的技术问题,本发明提出了一种基于NS3网络仿真平台的数据链仿真方法,通过NS3的软件框架和类,实现NS3网络仿真平台对Link-16数据链的仿真。
技术方案:
一种基于NS3网络仿真平台的数据链仿真方法,所述数据链仿真方法包括以下步骤:
S1,将Link-16数据链整体模型拆分成不同功能的子模块,包括J系列消息生成处理子类、节点中继子类、NetDevice控制子类、队列组子类、TDMA系统子类、报文处理及信道控制子类和无线信道子类;
S2,创建继承于Application父类的J系列消息生成处理子类,用于创建和接收Link-16数据链固定格式报文;
S3,创建继承于Object父类的节点中继子类,用于接收处理转发各种不同的固定格式报文,完成Link-16数据链节点中继的任务;
S4,创建继承于NetDevice父类的NetDevice控制子类,该类对报文进行解析处理、报文包头添加和报文入队操作;
S5,创建继承于Object父类的队列组子类,该类创建队列组;
S6,创建继承于Object父类的TDMA系统子类,通过NS3计时器Simulator::Schedule()实现系统的TDMA功能和对队列组进行出队管理;
S7,创建继承于Object父类的报文处理及信道控制子类,用于将报文拆分成码片组,再基于码片组,通过预先设置的调频图案伪随机选取信道传播码片序列;
S8,创建继承于Channel父类的无线信道子类,用于完成Link-16数据链的无线信道传输模型;
S9,将上述步骤S2至S8中所创建的子类通过各类中所创建的原语函数和回调函数相关联;
S10,在NS3文件夹的scratch文件夹下创建Link-16数据链的仿真脚本,对步骤S2至S8做创建类并调用类函数,对Link-16数据链进行仿真。
进一步地,步骤S2中,创建继承于Application父类的J系列消息生成处理子类的过程包括以下步骤:
S21,创建继承于Header父类的J系列消息库以对J系列消息进行生成与读取,具体地,通过NS3网络仿真平台中Packet类的AddHeader函数将J系列消息添加到创建的packet包中,通过NS3网络仿真平台中Packet类的RemoveHeader函数读取packet包中的J系列消息;
S22,创建第一原语函数和第一回调函数以使报文以及非报文信息在J系列消息生成处理子类和节点中继子类之间传输;其中,第一原语函数在NS3网络仿真平台中的作用为将J系列消息生成处理子类中的报文以及非报文信息传输到其它类中,第一回调函数是将其他子类中的报文以及非报文信息传输到J系列消息生成处理子类中;
S23,创建J系列消息生成发送函数SendLink16,用于生成和传输J系列消息;
S24,创建J系列消息接收处理函数RecvLink16,用于J系列消息的接收和处理。
进一步地,步骤S3中,创建继承于Object父类的节点中继子类的过程包括以下步骤:
S31,创建第二原语函数和第二回调函数以使报文以及非报文信息在节点中继子类和J系列消息生成处理子类之间传输;创建第三原语函数和第三回调函数以使报文以及非报文信息在节点中继子类和NetDevice控制子类之间传输;
S32,创建节点中继函数RelayPacket(),执行中继节点的节点中继功能;执行过程包括:
S321,判断接收到的报文是否来自J系列消息生成处理子类,如果是,记录报文ID后直接将报文传递到NetDevice控制子类中,结束函数;如果不是,转入步骤S322;
S322,读取报文的ID判断报文是否已经接收过,如果已经接收过,结束函数,否则,转入步骤S323;
S323,通过调用容器的添加函数push_back(),记录报文ID;
S324,将报文通过第二回调函数传递给J系列消息生成处理子类;
S325,判断继承于Object父类的节点是否被规划为中继节点,如果为中继节点,则将报文传递给NetDevice控制子类,否则,结束函数。
进一步地,步骤S4中,创建继承于NetDevice父类的NetDevice控制子类的过程包括以下步骤:
S41,创建第四原语函数和第四回调函数以使报文以及非报文信息在NetDevice控制类和节点中继子类之间传输;创建第五原语函数和第五回调函数以使报文以及非报文信息在NetDevice控制子类和队列组子类之间传输;
S42,创建继承于Header类的报头库,通过Packet类的AddHeader()函数和RemoveHeader()函数添加和处理报头;
S43,创建报文处理及入队函数PacketHandle(),用于总体控制报头的添加和处理报文的入队操作;
当NetDevice控制子类接收到报文时,首先判断报文是否来自于节点中继子类,如果是,读取节点中继子类传递而来的报文,通过报文的初始字中的标识和子标识判断J系列消息所参与的网络参与群,将含有节点终端航迹号的报头添加到报文后,再将添加报头后的报文根据其网络参与组添加到相应的队列中;否则,通过NS3网络仿真平台中Packet类的RemoveHeader()函数读取报文的报头中的终端航迹号和报头中其它的报文信息,将报文信息和要传输的非报文信息直接上传到节点中继子类中。
进一步地,步骤S5中,创建继承于Object父类的队列组子类的过程包括以下步骤:
S51,创建单队列类,该单队列类包含报文的入队函数和出队函数,以及容纳报文的第一容器;
S52,在队列组类中创建第二容器,第二容器根据Link-16数据链网络参与群个数创建相对应的23个队列组,用于代表固定格式报文中不同的网络参与群类型;
S53,创建第六原语函数、第七原语函数、第八原语函数、第九原语函数分别用于报文的入队、各个单队列的状态传递、控制队列出队和报文出队的操作。
进一步地,步骤S6中,创建继承于Object父类的TDMA系统子类的过程包括以下步骤:
S61,创建时隙分配函数SetSlot(),通过NS3网络仿真平台的脚本文件调用该时隙分配函数SetSlot(),使其采用Link-16数据链中的时隙集方式对时隙进行分配;
S62,创建时分多址函数StartTdmaSessions(),通过NS3网络仿真平台的系统函数Simulator::Schedule()对各个时隙进行跳转操作;
S63,创建第十原语函数和第十一原语函数,通过NS3网络仿真平台的系统函数Simulator::Schedule()来调度第十原语函数和第十一原语函数,分别用于控制队列和读取队列状态传递。
进一步地,步骤S62中,采用时分多址函数 StartTdmaSessions()对各个时隙进行跳转操作的过程包括以下步骤:
S621,设置并初始化私有变量TotalSlot=0,开启新的时帧,私有变量TotalSlot用于时隙的计数;
S622,开启计数器TotalSlot,TotalSlot++,进入新的时隙;
S623,根据TotalSlot的值判断当前时隙所在的编号,并通过在仿真开始时就分配好的传播时隙来判断当前时隙是否为执行时分多址函数节点的某个网络参与群发送报文的时间,如果是,转入步骤S624,否则,转入步骤S626;
S624,通过TDMA系统子类的读取队列状态的第七原语函数,判断参与网络参与群的队列是否为空,如果为空,转入步骤S626,否则,转入步骤S625;
S625,将队列中报文通过TDMA系统子类中的队列控制的第十原语函数,向报文处理及信道控制子类发送报文;
S626,调用NS3网络仿真平台的系统函数Simulator::Schedule()设置计时器,根据TotalSlot的值判断是否开启一个新的时帧,若TotalSlot>=1536,则证明当前时帧已经结束,返回步骤S621,重启一个新的时帧,若TotalSlot<1536,则证明当前时帧还没有结束,转入步骤S622,开启一个新的时隙。
进一步地,步骤S7中,创建继承于Object父类的报文处理及信道控制子类的过程包括以下步骤:
S71,创建第十二原语函数和第六回调函数以使报文以及非报文信息在报文处理及信道控制子类和NetDevice控制子类之间传输;创建第十三原语函数和第七回调函数以使报文以及非报文信息在报文处理及信道控制子类和NetDevice控制子类之间传输无线信道子类之间传输;
S72,创建PacketManage()函数对报文进行处理,生成码片;
S73,创建跳频图案库;
S74,创建第三容器以容纳Link-16数据链的51个信道;
S75,创建多个第四容器来同时接收并容纳无线信道接收到的多个码片;
S76,创建码片序列跳频函数ForwardDown(),用于向无线信道子类传递报文;
S77,创建函数Receive(),用于对跳频得到的码片序列进行重组,复现数据包。
进一步地,步骤S76中,采用码片序列跳频函数ForwardDown()向无线信道子类传递报文的过程包括以下步骤:
S761,判断接收到的码片序列是否来自队列组报文处理后生成的码片序列组,如果是,从跳频图案库中读取用于跳频的调频图案,转入步骤S762;否则,转入步骤S764;
S762,根据读取的跳频图案所规定的信道传递一个码片序列;
S763,判断是否完成码片序列组的跳频发送,若完成,则结束函数,若没有,通过NS3网络仿真平台的系统函数Simulator::Schedule(),在预设的等待周期后重新执行步骤S762;
S764,判断是否满足已读取码片序列组接下来的跳频图案,如果是,将码片加入满足跳频图案的码片序列组,转入步骤S765;否则,转入步骤S766;
S765,通过满足跳频图案的码片序列组中的码片序列的数量判断码片序列是否能够重组报文,如果能够重组报文,调用报文处理函数,将码片序列重新处理成报文,同时将报文上传到NetDevive控制子类中,结束函数;否则,直接结束函数;
S766,判断收到的码片序列是否对应跳频图案库中的首个跳频图案,如果对应,则创建用于添加码片序列的第五容器,将码片m序列添加到第五容器中,结束函数。
进一步地,步骤S8中,创建继承于Channel父类的无线信道子类的过程包括以下步骤:
S81,创建第十四原语函数用于接收报文处理及信道控制子类所传递下来的码片序列;
S82,创建无线信道发送码片序列函数Send(),该函数通过调用MobilityModel类以设置节点位置和节点移动模型,通过读取MobilityModel类的位置来判断是否超出通信距离;该函数还通过调用NS3网络仿真平台的系统函数Simulator::ScheduleWithContext()来对报文进行跨节点传输;
无线信道子类发送码片序列的过程包括以下步骤:
当无线信道子类接收到要发送的码片信息时,通过NS3网络仿真平台中MobilityModel类来读取发送报文节点的位置信息,同时读取绑定在信道上的接收报文节点的位置信息;
假设发送节点和接收节点间的位置分别为和/>,则两者之间的直线距离为:/>
通过发送节点和接收节点间的直线距离来判断接收节点是否能够接收到码片序列,如果能够,通过两点间直线距离计算传播时延为:/>,其中,c=299792458m/s,再通过NS3网络仿真平台的系统函数Simulator::ScheduleWithContext()实现码片序列的跨节点发送;否则,结束函数。
有益效果:
本发明的基于NS3网络仿真平台的数据链仿真方法,通过NS3的软件框架和基类实现对Link-16数据链的时分多址体系结构、J系类消息、网络参与群等多种关键技术仿真,同时还预留时隙分配,固定格式数据包配置等多种接口可以通过该设计进一步对Link-16数据链时隙规划等关键技术进行更深层次的研究。
附图说明
图1为本发明实施例的基于NS3网络仿真平台的数据链仿真方法流程图;
图2是J系列消息生成发送函数流程图;
图3是节点中继函数流程图;
图4是报文处理及入队函数流程图;
图5是时分多址函数流程图;
图6是码片序列跳频函数流程图;
图7是无线信道发送码片序列函数流程图;
图8是仿真场景图;
图9是节点时隙分配图;
图10是报文接收结果图;
图11是时分多址系统时间结果图;
图12是码片序列发送时间结果图。
具体实施方式
下面的实施例可使本专业技术人员更全面地理解本发明,但不以任何方式限制本发明。
本发明实施例提供了一种基于NS3网络仿真平台的数据链仿真方法,结合NS3网络仿真器的软件框架,将Link-16数据链整体模型拆分成不同功能的子模块,这些功能子模块通过NS3仿真软件中关键的基类如:频道Channel、网络设备驱动程序NetDevice、应用程序Application、对象Object等来逐一实现。参见图1,该仿真方法具体包括如下步骤:
步骤1,创建继承于Application父类的用于实现J系列消息生成处理的子类,该类创建和接收Link-16数据链固定格式报文,即J系列消息。
步骤2,创建继承于Object父类的用于实现节点中继的子类,该类接收处理转发各种不同的固定格式报文,完成Link-16数据链节点中继的任务。
步骤3,创建继承于NetDevice父类的用于实现NetDevice控制的子类,该类对报文解析处理、报文包头添加和报文入队操作。
步骤4,创建继承于Object父类的用于实现队列组的子类,该类创建队列组,实现Link-16数据链对队列组功能的需求。
步骤5,创建继承于Object父类的用于实现TDMA系统的子类,该类通过NS3计时器Simulator::Schedule()实现系统的TDMA功能和实现队列组的出队管理。
步骤6,创建继承于Object父类的用于实现报文处理及信道控制的子类,该类进一步处理报文,将其拆分成码片组,在将码片通过预先设置的调频图案伪随机选取信道传播码片序列。
步骤7,创建继承于Channel父类的用于实现无线信道的子类,该类完成Link-16数据链的无线信道传输模型。
步骤8,将上述步骤1~7中所创建的类通过各类中所创建的各种原语函数和回调函数相关联,实现报文的从上到下,再从下到上的传输与处理。
步骤9,在NS3文件夹的scratch文件夹下创建Link-16数据链的仿真脚本,实现对步骤1~9做创建类并调用类函数,最终实现Link-16数据链的仿真。
一,创建J系列消息生成处理类,具体如下:
步骤1.1,创建继承于Header父类的J系列消息库以实现J系列消息生成与读取,可通过NS3中Packet类的AddHeader函数将J系列消息添加到创建的packet包中,亦可通过NS3中Packet类的RemoveHeader函数读取packet包中的J系类消息。
步骤1.2,创建原语函数和回调函数各一个实现报文以及非报文信息在不同类之间的传输,即实现报文在J系列消息生成处理类和节点中继类之间传输。其中,原语函数在NS3中的作用为将该子类中的报文以及非报文信息传输到其它类中,回调函数是将其他子类中的报文以及非报文信息传输到该子类中。
步骤1.3,创建J系列消息生成发送函数SendLink16,该函数用于生成和传输J系列消息。
步骤1.4,创建J系列消息接收处理函数RecvLink16,该函数用于J系列消息的接收和处理。
如图2所示是J系列消息生成函数的流程图,具体如下:
步骤A1,产生一个0bit大小的数据包,即空的数据包。
步骤A2,通过Packet类的AddHeader函数,在报文库中选择并添加想要的报文。
步骤A3,通过J系列消息生成类中的原语函数将报文发送给下层的类中。
步骤A4,通过NS3系统函数Simulator::Schedule重新调用数据包生成函数实现报文持续发送。
二,创建节点中继类,具体如下:
步骤2.1,创建原语函数和回调函数各两个实现报文以及非报文信息在不同类之间的传输,即实现报文分别在节点中继类与J系列消息生成处理类之间传输和节点中继类与NetDevice控制类之间传输。
步骤2.2,创建节点中继函数RelayPacket(),实现中继节点的节点中继功能。
如图3所示是实现节点中继函数的流程图,主要具体如下:
步骤B1,判断接收到的报文是否来自J系列消息生成处理类,如果是则证明该报文是自身产生的,所以不需要做出判断,记录报文ID后直接将报文传递到NetDevice控制类中,结束函数。如果不是,则证明报文来自NetDevice控制类,即该报文是来自其他节点,需要进一步处理,进行步骤B2。
步骤B2,读取报文的ID判断该报文是否已经接收过,如果已经接收过则证明该报文已被处理过,则直接结束函数。如果该报文ID还未记录在该类所创建的容器中,则继续步骤B3及以后的步骤。
步骤B3,通过调用容器的添加函数push_back(),记录报文ID。
步骤B4,将该报文通过向J系列消息生成处理类传递报文的回调函数给J系列消息生成处理类传递报文。
步骤B5,判断该节点是否被规划为中继节点,如果为中继节点则将报文传递给NetDevice控制类,否则直接结束函数。
三,创建NetDevice控制类,具体如下:
步骤3.1,创建原语函数和回调函数各两个实现报文以及非报文信息在不同类之间的传输,即实现报文分别在NetDevice控制类与队列组类之间传输和NetDevice控制类与节点中继类之间传输。
步骤3.2,创建继承于Header类的报头库,可通过Packet类的AddHeader()函数和RemoveHeader()函数添加和处理报头。
步骤3.3,创建报文处理及入队函数PacketHandle(),该函数用于总体控制报头的添加和处理以及报文的入队操作。
如图4所示是NetDevice控制子类中报文处理及入队函数流程图,该函数总体控制报文的传输与处理,具体如下:
当接收到报文时,首先判断报文是否来自于节点中继类,如果是,则需要完成报文的报头添加和入队操作,执行以下步骤:读取节点中继类传递而来的报文,通过报文的初始字中的标识和子标识判断J系列消息所参与的网络参与群,将添加报头后的报文根据其网络参与组(NPG)添加到相应的队列中;其中,将含有节点终端航迹号的报头添加到报文之前,其中的终端航迹号在仿真初始化时每个Node都会被赋予。如果报文不来自于节点中继类,则证明报文来自于报文处理及信道控制类,即需要完成报文报头的解析与向中继节点类传递报文,执行以下步骤:通过NS3中Packet类的RemoveHeader()函数读取报文的报头中的终端航迹号和报头中其它的报文信息;再通过回调函数将报文信息和要传输的非报文信息如终端航迹号直接上传到节点中继类中。
四,创建队列组类,具体如下:
步骤4.1,创建单队列类,该类包含报文的入队和出队函数,以及一个可容纳报文的容器。
步骤4.2,在队列组类中创建一个容器,该容器根据Link-16数据链网络参与群个数创建相对应的23个队列组用于代表固定格式报文中不同的网络参与群类型。
步骤4.3,创建四个原语函数分别用于报文的入队、传递各个单队列的状态、控制该队列出队和报文出队这些功能。
五,创建TDMA系统类,具体如下:
步骤5.1,创建一个时隙分配函数SetSlot()实现时隙分配功能,该函数可以通过NS3的脚本文件调用,该函数还可通过Link-16数据链中的时隙集方式进行分配以实现高效分配时隙。
步骤5.2,创建时分多址函数StartTdmaSessions()实现Link-16数据链时分多址系统,该时分多址系统通过NS3系统函数Simulator::Schedule()实现各个时隙的跳转。
步骤5.3,创建两个原语函数分别用于控制队列和读取队列状态,该函数被步骤5.2创造的时分多址函数调用,通过NS3系统函数Simulator::Schedule()来调度这两个函数。
如图5所示是TDMA系统类实现时分多址函数流程图。在整个TDMA时隙中计时并执行报文传输的函数中设置该类的私有变量TotalSlot用于时隙的计数,该计数最大为1536,代表Link-16数据链一个时帧的时隙数。
该TDMA时隙计时功能和报文传输主要有两个函数构成:函数1为初始化函数,用于初始化TotalSlot=0;函数2为调用函数,用于实现重启一个时帧的作用;函数2为当前时帧内实际执行动作的函数,即实现时隙报文的传输;具体如下:
步骤C1,调用函数1初始化TotalSlot=0,开启新时帧,完成初始化TotalSlot之后,调用函数2。
步骤C2,在函数2中,开启计数器TotalSlot,每执行一次该函数则TotalSlot++。
步骤C3,根据TotalSlot的值判断当前时隙所在的编号,并通过在仿真开始时就分配好的传播时隙来判断该时隙是否为该节点某个网络参与群发送报文的时间。如果是则执行步骤C4,如果不是则执行步骤C6。
步骤C4,通过TDMA系统类的读取队列状态的原语函数,判断参与该网络参与群的队列是否为空,如果为空则执行步骤C6,如果不空则执行步骤C5。
步骤C5,队列中报文通过TDMA系统类中的队列控制的原语函数,实现报文的向报文处理及信道控制类发送报文。
步骤C6,调用NS3系统函数Simulator::Schedule()设置计时器,根据TotalSlot的值判断是否开启一个新的时帧,若TotalSlot>=1536则证明当前时帧已经结束,Simulator::Schedule()调用函数1,即步骤C1,重启一个新的时帧,若TotalSlot<1536则证明当前帧还没有结束,Simulator::Schedule()调用函数2,即步骤C2,只开启一个新的时隙。
六,创建报文处理及信道控制类,具体如下:
步骤6.1,创建原语函数和回调函数各两个实现报文以及非报文信息在不同类之间的传输,即实现报文分别在报文处理及信道控制类与无线信道类之间传输和报文处理及信道控制类与NetDevice控制类之间传输。
步骤6.2,创建PacketManage()函数实现报文的处理与码片的生成。
步骤6.3,创建跳频图案库。
步骤6.4,创建容器来容纳无线信道类,即容纳Link-16数据链的51个信道的容器。
步骤6.5,创建多个容器来容纳无线信道接收到的码片。这是由于考虑到Link-16数据链的多网结构,即可能同时接收多个报文的码片序列。所以在接受时要使用多个容器用于储存来自不同报文的码片序列,这些储存码片序列的容器,通过clear函数去除已经超时的容器。
步骤6.6,创建函数ForwardDown()码片序列跳频函数实现码片序列的向无线信道类传递报文,即实现Link-16数据链跳频功能。
步骤6.7,创建函数Receive()实现跳频得到的码片序列的重组,实现数据包的复现。
如图6所示是码片序列跳频函数流程图,具体如下:判断该序列是否来自队列组报文处理后生成的码片序列组,如果是则证明该码片序列组需要被传输,则进行如下步骤:
步骤D1,读取Link-16数据链用于跳频的调频图案。
步骤D2,根据跳频图案所规定的信道传递一个码片序列。
步骤D3,判断是否完成该码片系列组的跳频发送,若发送完成,则结束函数,若没有,则继续步骤D4。
步骤D4,通过NS3系统函数Simulator::Schedule(),规定13us后重新执行步骤D2。如果不是来自队列组报文处理后生成的码片序列组,则证明该码片序列来自Link-16无线信道即51个信道类的码片序列,在接收码片序列后要判断是否满足已读取码片序列组接下来的跳频图案。具体如下:
如果满足已读取码片序列组接下来的跳频图案,则进行如下步骤:
步骤E1,将码片加入该满足跳频图案的码片序列组。
步骤E2,通过码片序列的数量判断该码片序列是否已可以重组报文,如果可以重组报文就执行步骤E3,如果不行就结束函数。
步骤E3,调用报文处理函数,该函数可以将码片序列重新处理成报文,同时将报文上传到NetDevive控制类中。
如果不满足已读取码片序列组接下来的跳频图案,则进行如下步骤:
步骤F1,判断收到的码片序列是否可以在调频图案中找到这个信道所对应的首个跳频图案,如果可以找到就执行步骤F2,如果找不到就结束程序。
步骤F2,创建用于添加码片序列的容器,将该码片序列添加到该容器中,结束程序。
七,创建无线信道类,具体如下:
步骤7.1,创建一个原语函数用于接收报文处理及信道控制类所传递下来的码片序列。
步骤7.2,创建无线信道发送码片序列函数Send(),该函数调用MobilityModel类用于设置节点位置和节点移动模型,通过读取MobilityModel类的位置来判断是否超出通信距离。该函数还通过调用NS3系统函数Simulator::ScheduleWithContext()来实现报文跨节点的传输。
图 7 是无线信道发送码片序列函数流程图,具体如下:
步骤G1,当接收到要发送的码片信息时,通过 NS3 中 MobilityModel 类来读取发送报文节点的位置信息,同时读取绑定在信道上的接收报文节点的位置信息。
步骤G2,假设发送节点和接收节点间的位置分别为和/>,则两者之间的直线距离为:/>
由于 Link-16 数据链的用户工作在微波 L 频段,所以地-空通 信距离通常为150nmile,空-空通信距离通常为 300nmile,然而,地-地通信距离仅为 25nmile,超过该距离节点间就难以通信。因此通过两点间的直线距离来判断接收节点是否可以接收。如果能够接收,执行步骤G3和步骤G4,否则,直接结束函数。
步骤G3,通过两点间直线距离计算传播时延为:/>,其中,c=299792458m/s。
步骤G4,通过NS3网络仿真平台的系统函数Simulator::ScheduleWithContext()实现码片序列的跨节点发送。
如图8所示为本发明实施例的整体仿真实现图,一共设计了5个节点通过Link-16数据链实现数据的发送与处理。其中只给节点1、节点2、节点3分配了时隙,但是要求所有的节点都发送报文。如图9所示为五个节点在时帧内的时隙分配图,其中A-1,B-1,C-1…是时隙的编号,这是Link-16数据链中一个时帧对自己内时隙的编码方式。在时隙分配中,只给节点1、节点2、节点3在时帧中被分配时隙,没有给节点4和节点5分配时隙。图10是报文接收显示图,如图所示,一共包含三列输出结果,其中“FromAddress”代表从报文中读取的节点地址信息,由此可见只有节点1、节点2、节点3报文被其余4个节点接收,节点4和节点5由于没有被分配时隙而不能发送报文,从而没有接收这些节点的报文信息,符合Link-16数据链的要求。
如图11所示为本发明实现Link-16数据链时分多址系统的结果图,其中输出结果中“TDMAtime:xxxxxns”表示在仿真开始到何时开启一个新的时隙,将两行结果输出的时间相减得到时间差为7812500ns,即7.8125ms,符合Link-16数据链的时隙时间间隔.
图12为本发明实现在51个信道中为随机选取实现跳频的码片序列发送时间结果图,其中输出结果中“Thetimetosendthechipsequence:xxxxns”表示发送当前码片序列的时间,将两行结果输出的时间相减得到时间差为13000ns,即跳频速率为76923次/秒。符合Link-16数据链的跳频要求。图10至图12中的文字内容对本申请的技术方案的表述没有影响,主要是用于表达本发明方法的仿真结果显示效果。由此可见,本发明通过NS3的软件框架和基类,实现了NS3对Link-16数据链的仿真。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。

Claims (10)

1.一种基于NS3网络仿真平台的数据链仿真方法,其特征在于,所述数据链仿真方法包括以下步骤:
S1,将Link-16数据链整体模型拆分成不同功能的子模块,包括J系列消息生成处理子类、节点中继子类、NetDevice控制子类、队列组子类、TDMA系统子类、报文处理及信道控制子类和无线信道子类;
S2,创建继承于Application父类的J系列消息生成处理子类,用于创建和接收Link-16数据链固定格式报文;
S3,创建继承于Object父类的节点中继子类,用于接收处理转发各种不同的固定格式报文,完成Link-16数据链节点中继的任务;
S4,创建继承于NetDevice父类的NetDevice控制子类,该类对报文进行解析处理、报文包头添加和报文入队操作;
S5,创建继承于Object父类的队列组子类,该类创建队列组;
S6,创建继承于Object父类的TDMA系统子类,通过NS3计时器Simulator::Schedule()实现系统的TDMA功能和对队列组进行出队管理;
S7,创建继承于Object父类的报文处理及信道控制子类,用于将报文拆分成码片组,再基于码片组,通过预先设置的调频图案伪随机选取信道传播码片序列;
S8,创建继承于Channel父类的无线信道子类,用于完成Link-16数据链的无线信道传输模型;
S9,将上述步骤S2至S8中所创建的子类通过各类中所创建的原语函数和回调函数相关联;
S10,在NS3文件夹的scratch文件夹下创建Link-16数据链的仿真脚本,对步骤S2至S8做创建类并调用类函数,对Link-16数据链进行仿真。
2.根据权利要求1所述的基于NS3网络仿真平台的数据链仿真方法,其特征在于,步骤S2中,创建继承于Application父类的J系列消息生成处理子类的过程包括以下步骤:
S21,创建继承于Header父类的J系列消息库以对J系列消息进行生成与读取,具体地,通过NS3网络仿真平台中Packet类的AddHeader函数将J系列消息添加到创建的packet包中,通过NS3网络仿真平台中Packet类的RemoveHeader函数读取packet包中的J系列消息;
S22,创建第一原语函数和第一回调函数以使报文以及非报文信息在J系列消息生成处理子类和节点中继子类之间传输;其中,第一原语函数在NS3网络仿真平台中的作用为将J系列消息生成处理子类中的报文以及非报文信息传输到其它类中,第一回调函数是将其他子类中的报文以及非报文信息传输到J系列消息生成处理子类中;
S23,创建J系列消息生成发送函数SendLink16,用于生成和传输J系列消息;
S24,创建J系列消息接收处理函数RecvLink16,用于J系列消息的接收和处理。
3.根据权利要求1所述的基于NS3网络仿真平台的数据链仿真方法,其特征在于,步骤S3中,创建继承于Object父类的节点中继子类的过程包括以下步骤:
S31,创建第二原语函数和第二回调函数以使报文以及非报文信息在节点中继子类和J系列消息生成处理子类之间传输;创建第三原语函数和第三回调函数以使报文以及非报文信息在节点中继子类和NetDevice控制子类之间传输;
S32,创建节点中继函数RelayPacket(),执行中继节点的节点中继功能;执行过程包括:
S321,判断接收到的报文是否来自J系列消息生成处理子类,如果是,记录报文ID后直接将报文传递到NetDevice控制子类中,结束函数;如果不是,转入步骤S322;
S322,读取报文的ID判断报文是否已经接收过,如果已经接收过,结束函数,否则,转入步骤S323;
S323,通过调用容器的添加函数push_back(),记录报文ID;
S324,将报文通过第二回调函数传递给J系列消息生成处理子类;
S325,判断继承于Object父类的节点是否被规划为中继节点,如果为中继节点,则将报文传递给NetDevice控制子类,否则,结束函数。
4.根据权利要求1所述的基于NS3网络仿真平台的数据链仿真方法,其特征在于,步骤S4中,创建继承于NetDevice父类的NetDevice控制子类的过程包括以下步骤:
S41,创建第四原语函数和第四回调函数以使报文以及非报文信息在NetDevice控制类和节点中继子类之间传输;创建第五原语函数和第五回调函数以使报文以及非报文信息在NetDevice控制子类和队列组子类之间传输;
S42,创建继承于Header类的报头库,通过Packet类的AddHeader()函数和RemoveHeader()函数添加和处理报头;
S43,创建报文处理及入队函数PacketHandle(),用于总体控制报头的添加和处理报文的入队操作;
当NetDevice控制子类接收到报文时,首先判断报文是否来自于节点中继子类,如果是,读取节点中继子类传递而来的报文,通过报文的初始字中的标识和子标识判断J系列消息所参与的网络参与群,将含有节点终端航迹号的报头添加到报文后,再将添加报头后的报文根据其网络参与组添加到相应的队列中;否则,通过NS3网络仿真平台中Packet类的RemoveHeader()函数读取报文的报头中的终端航迹号和报头中其它的报文信息,将报文信息和要传输的非报文信息直接上传到节点中继子类中。
5.根据权利要求1所述的基于NS3网络仿真平台的数据链仿真方法,其特征在于,步骤S5中,创建继承于Object父类的队列组子类的过程包括以下步骤:
S51,创建单队列类,该单队列类包含报文的入队函数和出队函数,以及容纳报文的第一容器;
S52,在队列组类中创建第二容器,第二容器根据Link-16数据链网络参与群个数创建相对应的23个队列组,用于代表固定格式报文中不同的网络参与群类型;
S53,创建第六原语函数、第七原语函数、第八原语函数、第九原语函数分别用于报文的入队、各个单队列的状态传递、控制队列出队和报文出队的操作。
6.根据权利要求1所述的基于NS3网络仿真平台的数据链仿真方法,其特征在于,步骤S6中,创建继承于Object父类的TDMA系统子类的过程包括以下步骤:
S61,创建时隙分配函数SetSlot(),通过NS3网络仿真平台的脚本文件调用该时隙分配函数SetSlot(),使其采用Link-16数据链中的时隙集方式对时隙进行分配;
S62,创建时分多址函数StartTdmaSessions(),通过NS3网络仿真平台的系统函数Simulator::Schedule()对各个时隙进行跳转操作;
S63,创建第十原语函数和第十一原语函数,通过NS3网络仿真平台的系统函数Simulator::Schedule()来调度第十原语函数和第十一原语函数,分别用于控制队列和读取队列状态传递。
7.根据权利要求6所述的基于NS3网络仿真平台的数据链仿真方法,其特征在于,步骤S62中,采用时分多址函数 StartTdmaSessions()对各个时隙进行跳转操作的过程包括以下步骤:
S621,设置并初始化私有变量TotalSlot=0,开启新的时帧,私有变量TotalSlot用于时隙的计数;
S622,开启计数器TotalSlot,TotalSlot++,进入新的时隙;
S623,根据TotalSlot的值判断当前时隙所在的编号,并通过在仿真开始时就分配好的传播时隙来判断当前时隙是否为执行时分多址函数节点的某个网络参与群发送报文的时间,如果是,转入步骤S624,否则,转入步骤S626;
S624,通过TDMA系统子类的读取队列状态的第七原语函数,判断参与网络参与群的队列是否为空,如果为空,转入步骤S626,否则,转入步骤S625;
S625,将队列中报文通过TDMA系统子类中的队列控制的第十原语函数,向报文处理及信道控制子类发送报文;
S626,调用NS3网络仿真平台的系统函数Simulator::Schedule()设置计时器,根据TotalSlot的值判断是否开启一个新的时帧,若TotalSlot>=1536,则证明当前时帧已经结束,返回步骤S621,重启一个新的时帧,若TotalSlot<1536,则证明当前时帧还没有结束,转入步骤S622,开启一个新的时隙。
8.根据权利要求1所述的基于NS3网络仿真平台的数据链仿真方法,其特征在于,步骤S7中,创建继承于Object父类的报文处理及信道控制子类的过程包括以下步骤:
S71,创建第十二原语函数和第六回调函数以使报文以及非报文信息在报文处理及信道控制子类和NetDevice控制子类之间传输;创建第十三原语函数和第七回调函数以使报文以及非报文信息在报文处理及信道控制子类和NetDevice控制子类之间传输无线信道子类之间传输;
S72,创建PacketManage()函数对报文进行处理,生成码片;
S73,创建跳频图案库;
S74,创建第三容器以容纳Link-16数据链的51个信道;
S75,创建多个第四容器来同时接收并容纳无线信道接收到的多个码片;
S76,创建码片序列跳频函数ForwardDown(),用于向无线信道子类传递报文;
S77,创建函数Receive(),用于对跳频得到的码片序列进行重组,复现数据包。
9.根据权利要求1所述的基于NS3网络仿真平台的数据链仿真方法,其特征在于,步骤S76中,采用码片序列跳频函数ForwardDown()向无线信道子类传递报文的过程包括以下步骤:
S761,判断接收到的码片序列是否来自队列组报文处理后生成的码片序列组,如果是,从跳频图案库中读取用于跳频的调频图案,转入步骤S762;否则,转入步骤S764;
S762,根据读取的跳频图案所规定的信道传递一个码片序列;
S763,判断是否完成码片序列组的跳频发送,若完成,则结束函数,若没有,通过NS3网络仿真平台的系统函数Simulator::Schedule(),在预设的等待周期后重新执行步骤S762;
S764,判断是否满足已读取码片序列组接下来的跳频图案,如果是,将码片加入满足跳频图案的码片序列组,转入步骤S765;否则,转入步骤S766;
S765,通过满足跳频图案的码片序列组中的码片序列的数量判断码片序列是否能够重组报文,如果能够重组报文,调用报文处理函数,将码片序列重新处理成报文,同时将报文上传到NetDevive控制子类中,结束函数;否则,直接结束函数;
S766,判断收到的码片序列是否对应跳频图案库中的首个跳频图案,如果对应,则创建用于添加码片序列的第五容器,将码片m序列添加到第五容器中,结束函数。
10.根据权利要求1所述的基于NS3网络仿真平台的数据链仿真方法,其特征在于,步骤S8中,创建继承于Channel父类的无线信道子类的过程包括以下步骤:
S81,创建第十四原语函数用于接收报文处理及信道控制子类所传递下来的码片序列;
S82,创建无线信道发送码片序列函数Send(),该函数通过调用MobilityModel类以设置节点位置和节点移动模型,通过读取MobilityModel类的位置来判断是否超出通信距离;该函数还通过调用NS3网络仿真平台的系统函数Simulator::ScheduleWithContext()来对报文进行跨节点传输;
无线信道子类发送码片序列的过程包括以下步骤:
当无线信道子类接收到要发送的码片信息时,通过NS3网络仿真平台中MobilityModel类来读取发送报文节点的位置信息,同时读取绑定在信道上的接收报文节点的位置信息;
假设发送节点和接收节点间的位置分别为 和/>,则两者之间的直线距离为:
通过发送节点和接收节点间的直线距离来判断接收节点是否能够接收到码片序列,如果能够,通过两点间直线距离计算传播时延为:/>,其中,c=299792458m/s,再通过NS3网络仿真平台的系统函数Simulator::ScheduleWithContext()实现码片序列的跨节点发送;否则,结束函数。
CN202410014748.0A 2024-01-05 2024-01-05 一种基于ns3网络仿真平台的数据链仿真方法 Active CN117527610B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410014748.0A CN117527610B (zh) 2024-01-05 2024-01-05 一种基于ns3网络仿真平台的数据链仿真方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410014748.0A CN117527610B (zh) 2024-01-05 2024-01-05 一种基于ns3网络仿真平台的数据链仿真方法

Publications (2)

Publication Number Publication Date
CN117527610A true CN117527610A (zh) 2024-02-06
CN117527610B CN117527610B (zh) 2024-03-19

Family

ID=89751651

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410014748.0A Active CN117527610B (zh) 2024-01-05 2024-01-05 一种基于ns3网络仿真平台的数据链仿真方法

Country Status (1)

Country Link
CN (1) CN117527610B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050071347A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation System and method for conversion between graph-based representations and structural text-based representations of business processes
CN103200190A (zh) * 2013-03-26 2013-07-10 北京理工大学 一种面向QualNet网络半实物仿真的实物接入方法
CN109598040A (zh) * 2018-11-22 2019-04-09 浙江工业大学 基于tcp协议的ns3与matlab集成的联合仿真接口方法
WO2019232789A1 (zh) * 2018-06-08 2019-12-12 北京大学深圳研究生院 一种基于投票的共识方法
US20200112472A1 (en) * 2018-10-05 2020-04-09 Samsung Eletrônica da Amazônia Ltda. Method for digital video transmission adopting packaging forwarding strategies with path and content monitoring in heterogeneous networks using mmt protocol, method for reception and communication system
CN112702274A (zh) * 2020-12-24 2021-04-23 重庆邮电大学 战术瞄准网络技术中基于路由稳定性的跨层拥塞控制方法
CN112822720A (zh) * 2021-01-20 2021-05-18 重庆邮电大学 无人机组网技术中基于mac层链路质量的跨层拥塞控制方法
CN113507722A (zh) * 2021-07-05 2021-10-15 北京邮电大学 一种基于ns3的用于低轨卫星控制拥塞的平台的实现方法
CN117118855A (zh) * 2023-07-15 2023-11-24 电子科技大学 一种基于机器学习优先级预测的数据链spma接入方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050071347A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation System and method for conversion between graph-based representations and structural text-based representations of business processes
CN103200190A (zh) * 2013-03-26 2013-07-10 北京理工大学 一种面向QualNet网络半实物仿真的实物接入方法
WO2019232789A1 (zh) * 2018-06-08 2019-12-12 北京大学深圳研究生院 一种基于投票的共识方法
US20200112472A1 (en) * 2018-10-05 2020-04-09 Samsung Eletrônica da Amazônia Ltda. Method for digital video transmission adopting packaging forwarding strategies with path and content monitoring in heterogeneous networks using mmt protocol, method for reception and communication system
CN109598040A (zh) * 2018-11-22 2019-04-09 浙江工业大学 基于tcp协议的ns3与matlab集成的联合仿真接口方法
CN112702274A (zh) * 2020-12-24 2021-04-23 重庆邮电大学 战术瞄准网络技术中基于路由稳定性的跨层拥塞控制方法
CN112822720A (zh) * 2021-01-20 2021-05-18 重庆邮电大学 无人机组网技术中基于mac层链路质量的跨层拥塞控制方法
CN113507722A (zh) * 2021-07-05 2021-10-15 北京邮电大学 一种基于ns3的用于低轨卫星控制拥塞的平台的实现方法
CN117118855A (zh) * 2023-07-15 2023-11-24 电子科技大学 一种基于机器学习优先级预测的数据链spma接入方法

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
YAOWEN QI ET AL: ""CGR-QV: A virtual topology DTN routing algorithm based on queue scheduling"", 《 CHINA COMMUNICATIONS》, 24 July 2020 (2020-07-24) *
ZHENG WANG ET AL: ""Design and Implementation of NS3-Based Simulation System of LEO Satellite Constellation for IoTs"", 《2018 IEEE 4TH INTERNATIONAL CONFERENCE ON COMPUTER AND COMMUNICATIONS (ICCC)》, 1 August 2019 (2019-08-01) *
潘成胜等: ""面向并发业务的卫星网络服务功能链优化算法"", 《计算机工程》, 24 March 2021 (2021-03-24) *
茹新宇;刘渊;: "网络仿真器NS3的剖析与探究", 计算机技术与发展, no. 03, 5 December 2017 (2017-12-05) *
蒋凌云;卢凯;黄海平;陈雨昊;: "基于NS3的BCube数据中心网络仿真", 软件导刊, no. 05, 15 May 2020 (2020-05-15) *
赵超;黄永明;丁冉;王晓峰;孙兴东;: "多弹协同末制导中的数据链网络仿真技术", 航天电子对抗, no. 02, 19 July 2011 (2011-07-19) *

Also Published As

Publication number Publication date
CN117527610B (zh) 2024-03-19

Similar Documents

Publication Publication Date Title
Ephremides et al. Information theory and communication networks: An unconsummated union
Neely Delay-based network utility maximization
CN101626383B (zh) 一种航空电信网的路由测试方法及路由器虚拟机
Neely Delay analysis for max weight opportunistic scheduling in wireless systems
Lazar et al. Real-time traffic measurement on MAGNET II
Karadag et al. QoS-constrained semi-persistent scheduling of machine-type communications in cellular networks
Onalan et al. Relay selection, scheduling, and power control in wireless-powered cooperative communication networks
Kleinrock Creating a mathematical theory of computer networks
Neely Delay analysis for maximal scheduling in wireless networks with bursty traffic
CN117527610B (zh) 一种基于ns3网络仿真平台的数据链仿真方法
Darabkh et al. JavaSim-IBFD-CRNs: Novel java simulator for in-band Full-Duplex cognitive radio networks over Internet of Things environment
Li et al. Analysis of the IEEE 802.11 DCF with service differentiation support in non-saturation conditions
Gürsu et al. Admission control based traffic-agnostic delay-constrained random access (ac/dc-ra) for m2m communication
Li et al. Pseudo-isochronous cell forwarding
CN114726431B (zh) 一种面向低轨卫星星座的跳波束多址接入方法
Wieselthier et al. Some Markov Chain Problems in the Evaluation of Multiple-Access Protocols
Ko et al. Delay analysis for a TDMA channel with contiguous output and Poisson message arrival
KR20180089926A (ko) 모의기 연동을 위한 최적화된 시간-동기화 방법 및 시스템
CN108062032A (zh) 一种基于通信的电力分布式控制与仿真系统
Lombardo et al. An analytical paradigm to compare routing strategies in an ATM multimedia environment
Cadro et al. Performance evaluation of an optical transparent packet switch
Wong et al. Delay performance of voice and MMPP video traffic in cellular wireless ATM network
Gaeta et al. SWN analysis and simulation of large knockout ATM switches
CN109308893A (zh) 信息发送方法及装置、存储介质、电子装置
Markowski et al. Wireless MAC protocols for real-time battlefield communications

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant