基于NS3网络仿真平台的数据链仿真方法.pdf

上传人:00062****4422 文档编号:14525848 上传时间:2024-05-19 格式:PDF 页数:25 大小:3.19MB
收藏 版权申诉 举报 下载
基于NS3网络仿真平台的数据链仿真方法.pdf_第1页
第1页 / 共25页
基于NS3网络仿真平台的数据链仿真方法.pdf_第2页
第2页 / 共25页
基于NS3网络仿真平台的数据链仿真方法.pdf_第3页
第3页 / 共25页
文档描述:

《基于NS3网络仿真平台的数据链仿真方法.pdf》由会员分享,可在线阅读,更多相关《基于NS3网络仿真平台的数据链仿真方法.pdf(25页完成版)》请在专利查询网上搜索。

1、(19)国家知识产权局(12)发明专利申请(10)申请公布号 (43)申请公布日 (21)申请号 202410014748.0(22)申请日 2024.01.05(71)申请人 南京信息工程大学地址 210044 江苏省南京市浦口区宁六路219号(72)发明人 潘成胜陆煌杰王英植石怀峰(74)专利代理机构 南京经纬专利商标代理有限公司 32200专利代理师 陈月菊(51)Int.Cl.H04L 41/14(2022.01)H04J 3/16(2006.01)(54)发明名称一种基于NS3网络仿真平台的数据链仿真方法(57)摘要本发明提出了一种基于NS3网络仿真平台的数据链仿真方法,包括:将Li。

2、nk16数据链整体模型拆分成不同功能的子模块,包括J系列消息生成处理子类、节点中继子类、NetDevice控制子类、队列组子类、TDMA系统子类、报文处理及信道控制子类和无线信道子类;分别创建J系列消息生成处理子类、节点中继子类、NetDevice控制子类、队列组子类、TDMA系统子类、报文处理及信道控制子类、无线信道子类;在NS3文件夹的scratch文件夹下创建Link16数据链的仿真脚本,对Link16数据链进行仿真。本发明通过NS3的软件框架和类,实现NS3网络仿真平台对Link16数据链的仿真。权利要求书4页 说明书10页 附图10页CN 117527610 A2024.02.06C。

3、N 117527610 A1.一种基于NS3网络仿真平台的数据链仿真方法,其特征在于,所述数据链仿真方法包括以下步骤:S1,将Link16数据链整体模型拆分成不同功能的子模块,包括J系列消息生成处理子类、节点中继子类、NetDevice控制子类、队列组子类、TDMA系统子类、报文处理及信道控制子类和无线信道子类;S2,创建继承于Application父类的J系列消息生成处理子类,用于创建和接收Link16数据链固定格式报文;S3,创建继承于Object父类的节点中继子类,用于接收处理转发各种不同的固定格式报文,完成Link16数据链节点中继的任务;S4,创建继承于NetDevice父类的Net。

4、Device控制子类,该类对报文进行解析处理、报文包头添加和报文入队操作;S5,创建继承于Object父类的队列组子类,该类创建队列组;S6,创建继承于Object父类的TDMA系统子类,通过NS3计时器Simulator:Schedule()实现系统的TDMA功能和对队列组进行出队管理;S7,创建继承于Object父类的报文处理及信道控制子类,用于将报文拆分成码片组,再基于码片组,通过预先设置的调频图案伪随机选取信道传播码片序列;S8,创建继承于Channel父类的无线信道子类,用于完成Link16数据链的无线信道传输模型;S9,将上述步骤S2至S8中所创建的子类通过各类中所创建的原语函数和。

5、回调函数相关联;S10,在NS3文件夹的scratch文件夹下创建Link16数据链的仿真脚本,对步骤S2至S8做创建类并调用类函数,对Link16数据链进行仿真。2.根据权利要求1所述的基于NS3网络仿真平台的数据链仿真方法,其特征在于,步骤S2中,创建继承于Application父类的J系列消息生成处理子类的过程包括以下步骤:S21,创建继承于Header父类的J系列消息库以对J系列消息进行生成与读取,具体地,通过NS3网络仿真平台中Packet类的AddHeader函数将J系列消息添加到创建的packet包中,通过NS3网络仿真平台中Packet类的RemoveHeader函数读取pac。

6、ket包中的J系列消息;S22,创建第一原语函数和第一回调函数以使报文以及非报文信息在J系列消息生成处理子类和节点中继子类之间传输;其中,第一原语函数在NS3网络仿真平台中的作用为将J系列消息生成处理子类中的报文以及非报文信息传输到其它类中,第一回调函数是将其他子类中的报文以及非报文信息传输到J系列消息生成处理子类中;S23,创建J系列消息生成发送函数SendLink16,用于生成和传输J系列消息;S24,创建J系列消息接收处理函数RecvLink16,用于J系列消息的接收和处理。3.根据权利要求1所述的基于NS3网络仿真平台的数据链仿真方法,其特征在于,步骤S3中,创建继承于Object父类。

7、的节点中继子类的过程包括以下步骤:S31,创建第二原语函数和第二回调函数以使报文以及非报文信息在节点中继子类和J系列消息生成处理子类之间传输;创建第三原语函数和第三回调函数以使报文以及非报文信息在节点中继子类和NetDevice控制子类之间传输;S32,创建节点中继函数RelayPacket(),执行中继节点的节点中继功能;执行过程包权利要求书1/4 页2CN 117527610 A2括:S321,判断接收到的报文是否来自J系列消息生成处理子类,如果是,记录报文ID后直接将报文传递到NetDevice控制子类中,结束函数;如果不是,转入步骤S322;S322,读取报文的ID判断报文是否已经接收。

8、过,如果已经接收过,结束函数,否则,转入步骤S323;S323,通过调用容器的添加函数push_back(),记录报文ID;S324,将报文通过第二回调函数传递给J系列消息生成处理子类;S325,判断继承于Object父类的节点是否被规划为中继节点,如果为中继节点,则将报文传递给NetDevice控制子类,否则,结束函数。4.根据权利要求1所述的基于NS3网络仿真平台的数据链仿真方法,其特征在于,步骤S4中,创建继承于NetDevice父类的NetDevice控制子类的过程包括以下步骤:S41,创建第四原语函数和第四回调函数以使报文以及非报文信息在NetDevice控制类和节点中继子类之间传输。

9、;创建第五原语函数和第五回调函数以使报文以及非报文信息在NetDevice控制子类和队列组子类之间传输;S42,创建继承于Header类的报头库,通过Packet类的AddHeader()函数和RemoveHeader()函数添加和处理报头;S43,创建报文处理及入队函数PacketHandle(),用于总体控制报头的添加和处理报文的入队操作;当NetDevice控制子类接收到报文时,首先判断报文是否来自于节点中继子类,如果是,读取节点中继子类传递而来的报文,通过报文的初始字中的标识和子标识判断J系列消息所参与的网络参与群,将含有节点终端航迹号的报头添加到报文后,再将添加报头后的报文根据其网络。

10、参与组添加到相应的队列中;否则,通过NS3网络仿真平台中Packet类的RemoveHeader()函数读取报文的报头中的终端航迹号和报头中其它的报文信息,将报文信息和要传输的非报文信息直接上传到节点中继子类中。5.根据权利要求1所述的基于NS3网络仿真平台的数据链仿真方法,其特征在于,步骤S5中,创建继承于Object父类的队列组子类的过程包括以下步骤:S51,创建单队列类,该单队列类包含报文的入队函数和出队函数,以及容纳报文的第一容器;S52,在队列组类中创建第二容器,第二容器根据Link16数据链网络参与群个数创建相对应的23个队列组,用于代表固定格式报文中不同的网络参与群类型;S53,。

11、创建第六原语函数、第七原语函数、第八原语函数、第九原语函数分别用于报文的入队、各个单队列的状态传递、控制队列出队和报文出队的操作。6.根据权利要求1所述的基于NS3网络仿真平台的数据链仿真方法,其特征在于,步骤S6中,创建继承于Object父类的TDMA系统子类的过程包括以下步骤:S61,创建时隙分配函数SetSlot(),通过NS3网络仿真平台的脚本文件调用该时隙分配函数SetSlot(),使其采用Link16数据链中的时隙集方式对时隙进行分配;S62,创建时分多址函数StartTdmaSessions(),通过NS3网络仿真平台的系统函数Simulator:Schedule()对各个时隙进。

12、行跳转操作;S63,创建第十原语函数和第十一原语函数,通过NS3网络仿真平台的系统函数权利要求书2/4 页3CN 117527610 A3Simulator:Schedule()来调度第十原语函数和第十一原语函数,分别用于控制队列和读取队列状态传递。7.根据权利要求6所述的基于NS3网络仿真平台的数据链仿真方法,其特征在于,步骤S62中,采用时分多址函数 StartTdmaSessions()对各个时隙进行跳转操作的过程包括以下步骤:S621,设置并初始化私有变量TotalSlot=0,开启新的时帧,私有变量TotalSlot用于时隙的计数;S622,开启计数器TotalSlot,TotalS。

13、lot+,进入新的时隙;S623,根据TotalSlot的值判断当前时隙所在的编号,并通过在仿真开始时就分配好的传播时隙来判断当前时隙是否为执行时分多址函数节点的某个网络参与群发送报文的时间,如果是,转入步骤S624,否则,转入步骤S626;S624,通过TDMA系统子类的读取队列状态的第七原语函数,判断参与网络参与群的队列是否为空,如果为空,转入步骤S626,否则,转入步骤S625;S625,将队列中报文通过TDMA系统子类中的队列控制的第十原语函数,向报文处理及信道控制子类发送报文;S626,调用NS3网络仿真平台的系统函数Simulator:Schedule()设置计时器,根据Total。

14、Slot的值判断是否开启一个新的时帧,若TotalSlot=1536,则证明当前时帧已经结束,返回步骤S621,重启一个新的时帧,若TotalSlot=1536,则证明当前时帧已经说明书3/10 页8CN 117527610 A8结束,返回步骤S621,重启一个新的时帧,若TotalSlot=1536则证明当前时帧已经结束,Simulator:Schedule()调用函数1,即步骤C1,重启一个新的时帧,若TotalSlot1536则证明当前帧还没有结束,Simulator:Schedule()调用函数2,即步骤C2,只开启一个新的时隙。0059六,创建报文处理及信道控制类,具体如下:步骤6.。

15、1,创建原语函数和回调函数各两个实现报文以及非报文信息在不同类之间的传输,即实现报文分别在报文处理及信道控制类与无线信道类之间传输和报文处理及信道控制类与NetDevice控制类之间传输。0060步骤6.2,创建PacketManage()函数实现报文的处理与码片的生成。0061步骤6.3,创建跳频图案库。0062步骤6.4,创建容器来容纳无线信道类,即容纳Link16数据链的51个信道的容器。0063步骤6.5,创建多个容器来容纳无线信道接收到的码片。这是由于考虑到Link16数据链的多网结构,即可能同时接收多个报文的码片序列。所以在接受时要使用多个容器说明书8/10 页13CN 11752。

16、7610 A13用于储存来自不同报文的码片序列,这些储存码片序列的容器,通过clear函数去除已经超时的容器。0064步骤6.6,创建函数ForwardDown()码片序列跳频函数实现码片序列的向无线信道类传递报文,即实现Link16数据链跳频功能。0065步骤6.7,创建函数Receive()实现跳频得到的码片序列的重组,实现数据包的复现。0066如图6所示是码片序列跳频函数流程图,具体如下:判断该序列是否来自队列组报文处理后生成的码片序列组,如果是则证明该码片序列组需要被传输,则进行如下步骤:步骤D1,读取Link16数据链用于跳频的调频图案。0067步骤D2,根据跳频图案所规定的信道传递。

17、一个码片序列。0068步骤D3,判断是否完成该码片系列组的跳频发送,若发送完成,则结束函数,若没有,则继续步骤D4。0069步骤D4,通过NS3系统函数Simulator:Schedule(),规定13us后重新执行步骤D2。如果不是来自队列组报文处理后生成的码片序列组,则证明该码片序列来自Link16无线信道即51个信道类的码片序列,在接收码片序列后要判断是否满足已读取码片序列组接下来的跳频图案。具体如下:如果满足已读取码片序列组接下来的跳频图案,则进行如下步骤:步骤E1,将码片加入该满足跳频图案的码片序列组。0070步骤E2,通过码片序列的数量判断该码片序列是否已可以重组报文,如果可以重组。

18、报文就执行步骤E3,如果不行就结束函数。0071步骤E3,调用报文处理函数,该函数可以将码片序列重新处理成报文,同时将报文上传到NetDevive控制类中。0072如果不满足已读取码片序列组接下来的跳频图案,则进行如下步骤:步骤F1,判断收到的码片序列是否可以在调频图案中找到这个信道所对应的首个跳频图案,如果可以找到就执行步骤F2,如果找不到就结束程序。0073步骤F2,创建用于添加码片序列的容器,将该码片序列添加到该容器中,结束程序。0074七,创建无线信道类,具体如下:步骤7.1,创建一个原语函数用于接收报文处理及信道控制类所传递下来的码片序列。0075步骤7.2,创建无线信道发送码片序列。

19、函数Send(),该函数调用MobilityModel类用于设置节点位置和节点移动模型,通过读取MobilityModel类的位置来判断是否超出通信距离。该函数还通过调用NS3系统函数Simulator:ScheduleWithContext()来实现报文跨节点的传输。0076图 7 是无线信道发送码片序列函数流程图,具体如下:步骤G1,当接收到要发送的码片信息时,通过 NS3 中 MobilityModel 类来读取发送报文节点的位置信息,同时读取绑定在信道上的接收报文节点的位置信息。0077步骤G2,假设发送节点和接收节点间的位置分别为和,则两者之间的直线距离为:。说明书9/10 页14C。

20、N 117527610 A140078由于 Link16 数据链的用户工作在微波 L 频段,所以地空通 信距离通常为 150nmile,空空通信距离通常为 300nmile,然而,地地通信距离仅为 25nmile,超过该距离节点间就难以通信。因此通过两点间的直线距离来判断接收节点是否可以接收。如果能够接收,执行步骤G3和步骤G4,否则,直接结束函数。0079步骤G3,通过两点间直线距离计算传播时延为:,其中,c=299792458m/s。0080步骤G4,通过NS3网络仿真平台的系统函数Simulator:ScheduleWithContext()实现码片序列的跨节点发送。0081如图8所示为。

21、本发明实施例的整体仿真实现图,一共设计了5个节点通过Link16数据链实现数据的发送与处理。其中只给节点1、节点2、节点3分配了时隙,但是要求所有的节点都发送报文。如图9所示为五个节点在时帧内的时隙分配图,其中A1,B1,C1是时隙的编号,这是Link16数据链中一个时帧对自己内时隙的编码方式。在时隙分配中,只给节点1、节点2、节点3在时帧中被分配时隙,没有给节点4和节点5分配时隙。图10是报文接收显示图,如图所示,一共包含三列输出结果,其中“FromAddress”代表从报文中读取的节点地址信息,由此可见只有节点1、节点2、节点3报文被其余4个节点接收,节点4和节点5由于没有被分配时隙而不能。

22、发送报文,从而没有接收这些节点的报文信息,符合Link16数据链的要求。0082如图11所示为本发明实现Link16数据链时分多址系统的结果图,其中输出结果中“TDMAtime:xxxxxns”表示在仿真开始到何时开启一个新的时隙,将两行结果输出的时间相减得到时间差为7812500ns,即7.8125ms,符合Link16数据链的时隙时间间隔.图12为本发明实现在51个信道中为随机选取实现跳频的码片序列发送时间结果图,其中输出结果中“Thetimetosendthechipsequence:xxxxns”表示发送当前码片序列的时间,将两行结果输出的时间相减得到时间差为13000ns,即跳频速率。

23、为76923次/秒。符合Link16数据链的跳频要求。图10至图12中的文字内容对本申请的技术方案的表述没有影响,主要是用于表达本发明方法的仿真结果显示效果。由此可见,本发明通过NS3的软件框架和基类,实现了NS3对Link16数据链的仿真。0083以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。说明书10/10 页15CN 117527610 A15图 1说明书附图1/10 页16CN 117527610 A16图 2说明书附图2/10 页17CN 117527610 A17图 3说明书附图3/10 页18CN 117527610 A18图 4说明书附图4/10 页19CN 117527610 A19图 5说明书附图5/10 页20CN 117527610 A20图 6说明书附图6/10 页21CN 117527610 A21图 7说明书附图7/10 页22CN 117527610 A22图 8图 9说明书附图8/10 页23CN 117527610 A23图 10图 11说明书附图9/10 页24CN 117527610 A24图 12说明书附图10/10 页25CN 117527610 A25。

展开阅读全文
内容关键字: 基于 NS3 网络 仿真 平台 数据链 方法
关于本文
本文标题:基于NS3网络仿真平台的数据链仿真方法.pdf
链接地址:https://www.zhuanlichaxun.net/pdf/14525848.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1