一种大规模Ad-hoc网络硬件仿真存储管理及转发控制模拟方法

摘要: 本发明涉及一种大规模ad-hoc网络硬件仿真存储管理及转发控制模拟方法,属于电子电路与网络仿真。背景技术:1、ad-hoc网络具有无中心、自组织、多跳转发和动态...
一种大规模Ad-hoc网络硬件仿真存储管理及转发控制模拟方法

本发明涉及一种大规模ad-hoc网络硬件仿真存储管理及转发控制模拟方法,属于电子电路与网络仿真。

背景技术:

1、ad-hoc网络具有无中心、自组织、多跳转发和动态拓扑等特点,适用于复杂环境下的快速组网通信。随着网络规模和业务量不断增加,对ad-hoc网络协议、路由机制、接入控制和转发行为进行大规模硬件仿真的需求日益突出。相比软件仿真,基于fpga的硬件仿真具有并行度高、实时性强和可扩展性好的优势,能够更有效地支撑多节点、多业务和多跳转发场景下的网络行为验证。

2、然而,在大规模ad-hoc网络硬件仿真中,节点数量多、业务优先级复杂、数据包转发路径长,导致仿真系统需要维护大量节点队列和缓存数据包。若在fpga片内直接缓存完整数据包并进行节点间流转,将大量消耗片内ram、fifo等存储资源,限制可支持的节点规模和队列深度。同时,多节点并发转发过程中,数据包的重复搬移也会增加片内数据通路压力,影响仿真吞吐率和处理效率。

3、现有fpga缓存结构通常侧重于单一数据流缓存或固定端口的数据读写管理,难以同时满足大规模虚拟节点队列维护、数据包大容量存储和多节点转发控制的需求。因此,亟需一种适用于大规模自组织网络硬件仿真的缓存架构,在保证数据包存储容量和转发效率的同时,降低fpga片内存储资源消耗。

4、本发明采用存控分离的设计思想,将完整数据包载荷集中存储于片外ddr中,在ddr中构建面向多节点、多优先级的虚拟节点队列,并采用轻量级指针描述符表征数据包参与节点排队、状态流转和多跳转发控制。fpga片内仅维护队列读写指针、队列状态、节点状态等轻量级控制信息,从而实现片外大容量存储与片内轻量级控制的结合,提高大规模ad-hoc网络硬件仿真的缓存容量、队列扩展能力和并发处理能力。

技术实现思路

1、本发明的目的是提供一种大规模ad-hoc网络硬件仿真存储管理及转发控制模拟方法,通过存控分离机制将完整数据包载荷存储于片外共享缓存,并以数据量小于完整载荷的载荷索引描述符替代完整载荷参与片内节点排队和转发调度,以降低fpga片内资源消耗,提升多节点并发处理能力和转发效率。

2、为达到上述目的,本发明是采用下述技术方案实现的。

3、本发明提供一种大规模ad-hoc网络硬件仿真存储管理及转发控制模拟方法,包括:

4、s1:当数据包载荷进入fpga后,获取所述数据包载荷的可用存储地址以及载荷关联信息;

5、s2:根据所述可用存储地址,将所述数据包载荷存入片外共享缓存的数据缓冲区;

6、s3:根据所述可用存储地址以及载荷关联信息,生成用于表征完整的数据包载荷的载荷索引描述符;所述载荷索引描述符的数据量小于数据包载荷的数据量,并代替数据包载荷参与片内的虚拟节点排队、路由查找及转发调度处理;

7、s4:根据所述载荷索引描述符中的载荷关联信息,将所述载荷索引描述符写入片外共享缓存的描述符缓冲区中对应虚拟节点队列的队尾,并更新所述虚拟节点队列的队列状态信息;所述片外共享缓存中构建有分别对应不同仿真节点的多个虚拟节点队列,各虚拟节点队列用于存储归属于相应仿真节点的载荷索引描述符;

8、s5:当某一仿真节点获得转发机会时,从所述片外共享缓存中对应虚拟节点队列的队首读取载荷索引描述符;

9、s6:根据读取出的载荷索引描述符进行路由查找,若结果表明需要中继转发,则保持所述数据包载荷在数据缓冲区中的存储地址及存储内容不变,修改载荷索引描述符中的载荷关联信息并返回执行s4;若所述路由查找的结果表明到达目的节点,则根据所述载荷索引描述符中的可用存储地址从片外共享缓存中读取数据包载荷并输出;若所述路由查找失败,则释放可用存储地址对应的存储空间;

10、s7:输出完成后释放所述可用存储地址对应的存储空间。

11、进一步地,所述虚拟节点队列的队列状态信息由大规模节点队列管理模块在片内用bram维护,所述队列状态信息包括各所述虚拟节点队列的读指针、写指针、队列深度和空满状态;在将所述载荷索引描述符写入片外共享缓存的描述符缓冲区中对应虚拟节点队列的队尾之前,所述方法还包括:

12、解析所述数据包载荷,提取节点信息和优先级信息,向所述大规模节点队列管理模块查询对应虚拟节点队列的队列状态信息;

13、若所述虚拟节点队列已满,则对所述数据包载荷执行丢弃处理,结束处理;

14、若所述虚拟节点队列未满,则获取所述数据包载荷的可用存储地址,构建所述载荷索引描述符。

15、进一步地,将所述载荷索引描述符写入所述虚拟节点队列的队尾时,所述大规模节点队列管理模块根据所述载荷索引描述符中的载荷关联信息以及优先级信息确定目标虚拟节点队列的深度信息和读写指针信息的访问地址;

16、读取所述目标虚拟节点队列的写指针,根据所述写指针构建所述描述符缓冲区中的写入地址,写入完成后更新虚拟节点队列的队列状态信息。

17、进一步地,所述片外共享缓存的描述符缓冲区中,为每个仿真节点构建有分别对应不同优先级的多个虚拟节点队列;

18、所述从所述片外共享缓存中对应虚拟节点队列的队首读取载荷索引描述符,具体包括:所述大规模节点队列管理模块采用优先级调度算法,从当前仿真节点对应的多个虚拟节点队列中选定优先级最高的非空队列,从被选定的虚拟节点队列的队首读取载荷索引描述符,并根据所述读指针更新所述被选定的虚拟节点队列的队列状态信息。

19、进一步地,通过双层空闲地址索引管理电路获取所述数据包载荷的可用存储地址;其中,所述双层空闲地址索引管理电路用于管理表征共享缓存的可用载荷存储空间的空闲地址索引;所述空闲地址索引包括片内索引缓冲区和片外索引存储区,所述片内索引缓冲区设置用于缓存待分配的空闲地址索引的可用地址fifo和待回收的空闲地址索引的回收地址fifo;所述片外索引存储区在所述片外共享缓存中设置空闲地址索引缓冲区,用于批量存储空闲地址索引。

20、进一步地,所述双层空闲地址索引管理电路实时监控所述可用地址fifo以及所述回收地址fifo的深度状态与所述片外共享缓存中的空闲地址索引缓冲区中的存量状态:

21、当所述回收地址fifo的深度大于第一预设门限时,通过对所述片外共享缓存的写请求将回收的空闲地址索引批量写入所述空闲地址索引缓冲区中;

22、当所述可用地址fifo的深度小于第二预设门限,且所述空闲地址索引缓冲区中的存量大于第三预设门限时,通过对所述片外共享缓存的读请求从所述空闲地址索引缓冲区中批量读取空闲地址索引,并将读取后的空闲地址索引写入所述可用地址fifo中。

23、进一步地,所述方法还包括初始化:

24、系统复位后,所述双层空闲地址索引管理电路按照预设数量持续生成空闲地址索引并写入所述片内回收地址fifo;

25、若写入过程中所述回收地址fifo触发背压门限,则暂停等待直至背压解除;

26、当生成的空闲地址索引总数达到预设总数时,初始化完成。

27、进一步地,所述获取可用存储地址过程包括:

28、判断所述可用地址fifo是否为空;

29、当所述可用地址fifo不为空时,向所述双层空闲地址索引管理电路发送空闲地址申请请求;

30、所述双层空闲地址索引管理电路从所述可用地址fifo中分配一个空闲地址索引作为所述可用存储地址。

31、进一步地,所述释放所述可用存储地址对应的存储空间,具体包括:

32、向所述双层空闲地址索引管理电路发送空闲地址索引回收请求,若回收地址fifo未触发背压门限,则所述双层空闲地址索引管理电路接收回收的所述可用存储地址作为空闲地址索引并写入回收地址fifo,以供后续数据包载荷写入时重新分配使用。

33、进一步地,所述片外共享缓存为片外ddr;向所述片外ddr发起的读写访问请求包括空闲地址索引的读写请求、载荷索引描述符的读写请求和数据包载荷的读写请求三类,三类读写请求通过多路复用总线仲裁模块统一仲裁后访问所述片外ddr。

34、与现有技术相比,本发明所达到的有益效果:

35、本发明提出了“存控分离”机制,现有技术中数据包fpga片内排队和转发时通常需要将完整数据包载荷缓存于片内bram或fifo中,每个数据包均占用片内存储资源,而本实验将完整数据包载荷存入片外共享缓存,并生成一个数据量远小于原始载荷的载荷索引描述符作为片内处理的对象,由此,片内存储资源不再需要为每个排队的数据包预留完整载荷的存储空间,仅需承载轻量级的描述符及队列控制状态信息,从而显著降低了fpga片内bram和逻辑资源的消耗;同时,由于描述符的数据量极小,片内处理描述符所需的读写带宽和时钟周期数远低于处理完整数据包载荷,这为进一步提升系统并发处理能力提供了前提条件;

36、本发明通过构建完整的队列管理闭环,即通过将载荷索引描述符从虚拟队列队尾插入,从虚拟队列队头取出,符合队列先进先出的基本语义,其插入和取出均只需要调用一个轻量级描述符,而非完整数据,因此在数据包多跳转发场景中,通过仅搬移描述符的方式,使得每次出队操作的数据搬移量降低数个数量级,从而有效减少了数据通路的占用率和访问延迟。