一种高速数据包构造和分发控制方法及设备技术

技术编号:13742962 阅读:94 留言:0更新日期:2016-09-23 03:39
本发明专利技术公开了一种高速数据包构造和分发控制方法及设备,本发明专利技术高速数据包构造和分发控制设备包括:线程调度模块、报文载荷构造模块、报文封装模块、发送流量控制模块、输出接口选择模块;其中线程调度模块、报文载荷构造模块、报文封装模块、发送流量控制模块由NPU软件实现;输出接口选择模块由FPGA实现。采用流水线工作机制,不同功能模块附加在多线程上按次序工作,各个线程按一定次序处理不同的功能模块。与现有技术相比,本发明专利技术高速数据包构造和分发控制设备及方法可以大幅度提高报文的发送速率,同时解决了现有基于硬件技术实现的数据包发送工具存在的高速数据包的多样性构造问题。

【技术实现步骤摘要】

本专利技术属于计算机网络领域,尤其是对应用到高速网络报文构造和多接口发送控制的方法及设备。
技术介绍
网络流量测试仪是网络设备和系统性能、安全测试的一个重要工具,并能够对网络设备和系统的各项指标(丢包率,网络吞口量,网络延时)进行有效的评价,应用网络测试仪是评价网络系统和网络安全设备的一项重要手段。用测试仪测试被测设备时,需要网络测试仪构造和发送高速流量,高速数据包构造和发送速率控制是网络测试仪的重要模块。在国内外,已实现的网络数据包生成技术,一般是基于软件构造网络数据包和发送数据包,或者是基于硬件FPGA实现网络数据包构造和发送。大部分基于软件实现的数据包发送工具采用x86结构,着力于提高运算性能,集中在Cache一致性、分支预测等方面进行优化,而在访存性能的优化上则较少,导致构造数据包和发送数据包速率较低,仅能够满足低速网络设备的测试,并不能满足对数据包流量要求很高的网络设备和系统的测试。基于硬件技术实现的数据包发送工具虽然能够满足对数据包速率要求较高的设备测试,但测试的数据包比较单一,且数据包的类型和长度基本比较固定,不能动态的调整数据包的类型和内容,不能准确的反映被测设备的性能指标,且只能适应于某些特定的测试设备。因此,基于现有数据包构造和分发控制方法及设备实现高速数据包构造和发送,难以同时满足报文的多样性构造和高速数据包发送。
技术实现思路
本专利技术提供一种高速数据包构造和分发控制方法及设备,目的是克服现有的数据包多样性构造和发送速率等技术的不足,在多核NPU(Network Processing Unit,网络处理器)+FPGA平台上实现,以解决高速数据包的多样性构造和多接口发送控制问题。技术方案如下:一种高速数据包构造和分发控制方法,其特征在于,步骤包括:第一步,线程调度模块根据定制任务从线程池中取线程并将线程调度至报文载荷构造模块、报文封装模块、发送流量控制模块,记处理报文载荷构造模块、报文封装模块、发送流量控制模块的线程分别为报文载荷构造线程、报文封装线程、发送流量控制线程;第二步,报文载荷构造线程执行报文载荷构造模块,读取载荷配置参数,构造报文载荷数据,然后将报文载荷数据放入构造载荷队列;第三步,报文封装线程执行报文封装模块,从构造载荷队列读取报文载荷构造模块构造的报文载荷数据,读取报文配置,封装报文头,且在以太网报文头部自定义域中指定报文输出接口;然后将封装好的报文放入发送队列;第四步,发送流量控制线程执行发送流量控制模块,从发送队列读取报文,根据多接口之间流量控制机制将报文发送给输出接口选择模块;第五步,输出接口选择模块将从发送流量控制模块接收的报文分流至指定的输出接口。作为本专利技术高速数据包构造和分发控制方法的进一步改进:所述高速数据包构造和分发控制方法还固定使用一个线程心跳读取系统时间,并将系统时间共享给发送流量控制线程使用,其他线程不需要频繁读取系统时间,减少系统调用上下文切换时间。所述高速数据包构造和分发控制方法的各个执行线程之间使用队列共享数据,线程之间用生产者/消费者模型来处理多样性数据包构造和发送,报文封装线程从空闲队列获取数据包描述符并将已构造的数据包描述符插入发送队列,发送流量控制线程从发送队列中取发送数据包描述符发送且将数据包描述符还至空闲队列。所述线程调度模块采用分组线程调度方法,每组线程内包含一个处理报文载荷构造模块的报文载荷构造线程、一个处理报文封装模块的报文封装线程和一个处理发送流量控制模块的发送流量控制线程;且线程分组内共享一个生产者/消费者队列。所述高速数据包构造和分发控制方法第二步中报文载荷构造线程步骤包括:步骤101、初始化空闲载荷队列,给空闲载荷队列分配空闲载荷缓存块;空闲载荷缓存块是由报文载荷构造线程从空闲载荷队列中读取并存储已构造数据的缓存块;步骤102、初始化构造载荷队列,报文载荷构造线程填充空闲载荷缓存块并插入至构造载荷队列中;步骤103、判断空闲载荷队列是否为空,如果不为空则执行步骤104,否则继续执行步骤103;步骤104、从空闲载荷队列中取空闲载荷缓存块,读取构造配置数据生成载荷数据,并将载荷数据填充至空闲载荷缓存块;步骤105、判断构造载荷队列是否满,如果未满执行步骤107,否则执行步骤106;步骤106、将已构造空闲缓存块中数据清除并插入至空闲载荷队列,转步骤103;步骤107、将已构造空闲缓存块插入至构造载荷队列;步骤108、判断数据包发送任务是否结束,如果不结束,则执行步骤103;否则,结束。所述高速数据包构造和分发控制方法第三步中报文封装线程步骤包括:步骤201、初始化空闲构造队列,分配数据包描述符;步骤202、初始化发送队列;步骤203、报文封装线程判断空闲构造队列是否为空,如果不为空则执行步骤204,否则继续执行步骤203;步骤204、读取数据包配置,从空闲构造队列中出队数据包描述符,从构造载荷队列中取已构造的载荷缓存块封装至数据包描述符,完成后将空闲载荷块还回至空闲载荷队列,填充自定义域数据,设定输出接口,至此完成报文封装;步骤205、报文封装线程判断发送队列是否满,如果未满则执行步骤207,否则执行步骤206;步骤206、报文封装线程释放数据包描述符至空闲构造队列,转步骤203;步骤207、报文封装线程将已构造的数据包描述符插入发送队列;步骤208、报文封装线程判断数据包发送任务是否结束,如果不结束,则执行步骤203;否则结束。所述高速数据包构造和分发控制方法第四步中发送流量控制线程步骤包括:步骤301、判断发送队列是否为空,如果不为空则执行步骤302,否则执行步骤301;步骤302、在发送队列中获取数据包描述符;步骤303、计算输出接口实时流量;步骤304、判断输出接口实时流量是否小于预设的接口流量,如果是则执行步骤306,否则执行步骤305;步骤305、释放数据包描述符至空闲构造队列,转步骤301;步骤306、发送报文至输出接口;步骤307、判断数据包发送任务是否结束,如果未结束,则执行步骤301;否则,结束。本专利技术还提供一种高速数据包构造和分发控制设备,其特征在于,包括线程调度模块、报文载荷构造模块、报文封装模块、发送流量控制模块、输出接口选择模块;线程调度模块用于从线程池中取空闲线程分配不同的功能,待高速数据包发送任务执行完成后回收线程资源至线程池;报文载荷构造模块用于读取载荷配置参数,并构造报文载荷数据;报文封装模块用于读取报文配置,封装报文头,且在以太网报文头部自定义域中指定报文输出接口;发送流量控制模块用于多接口之间流量控制;输出接口选择模块用于将软件产生的高速流量分流至指定的输出接口。作为本专利技术高速数据包构造和分发控制设备的进一步改进,所述线程调度模块、报文载荷构造模块、报文封装模块、发送流量控制模块由NPU软件实现;所述输出接口选择模块由FPGA实现。与现有技术相比,本专利技术高速数据包构造和分发控制方法及设备的有益效果是:●本专利技术设备及方法中线程调度模块将线程按承载的功能分组,组间线程之间无数据共享,相互之间无干扰,以求尽量减少多线程执行过程中资源瓶颈。线程分组内各个功能模块按流水线有次序的执行,用生产者/消费者模型来处理多样性的数据包构造和发送,组内线程之间对共享队列可以达到无锁的本文档来自技高网...

【技术保护点】
一种高速数据包构造和分发控制方法,其特征在于,步骤包括:第一步,线程调度模块根据定制任务从线程池中取线程并将线程调度至报文载荷构造模块、报文封装模块、发送流量控制模块,记处理报文载荷构造模块、报文封装模块、发送流量控制模块的线程分别为报文载荷构造线程、报文封装线程、发送流量控制线程;第二步,报文载荷构造线程执行报文载荷构造模块,读取载荷配置参数,构造报文载荷数据,然后将报文载荷数据放入构造载荷队列;第三步,报文封装线程执行报文封装模块,从构造载荷队列读取报文载荷构造模块构造的报文载荷数据,读取报文配置,封装报文头,且在以太网报文头部自定义域中指定报文输出接口;然后将封装好的报文放入发送队列;第四步,发送流量控制线程执行发送流量控制模块,从发送队列读取报文,根据多接口之间流量控制机制将报文发送给输出接口选择模块;第五步,输出接口选择模块将从发送流量控制模块接收的报文分流至指定的输出接口。

【技术特征摘要】
1.一种高速数据包构造和分发控制方法,其特征在于,步骤包括:第一步,线程调度模块根据定制任务从线程池中取线程并将线程调度至报文载荷构造模块、报文封装模块、发送流量控制模块,记处理报文载荷构造模块、报文封装模块、发送流量控制模块的线程分别为报文载荷构造线程、报文封装线程、发送流量控制线程;第二步,报文载荷构造线程执行报文载荷构造模块,读取载荷配置参数,构造报文载荷数据,然后将报文载荷数据放入构造载荷队列;第三步,报文封装线程执行报文封装模块,从构造载荷队列读取报文载荷构造模块构造的报文载荷数据,读取报文配置,封装报文头,且在以太网报文头部自定义域中指定报文输出接口;然后将封装好的报文放入发送队列;第四步,发送流量控制线程执行发送流量控制模块,从发送队列读取报文,根据多接口之间流量控制机制将报文发送给输出接口选择模块;第五步,输出接口选择模块将从发送流量控制模块接收的报文分流至指定的输出接口。2.如权利要求1所述的高速数据包构造和分发控制方法,其特征在于,所述高速数据包构造和分发控制方法还固定使用一个线程心跳读取系统时间,并将系统时间共享给发送流量控制线程使用,其他线程不需要频繁读取系统时间,减少系统调用上下文切换时间。3.如权利要求1所述的高速数据包构造和分发控制方法,其特征在于,所述高速数据包构造和分发控制方法的各个执行线程之间使用队列共享数据,线程之间用生产者/消费者模型来处理多样性数据包构造和发送,报文封装线程从空闲队列获取数据包描述符并将已构造的数据包描述符插入发送队列,发送流量控制线程从发送队列中取发送数据包描述符发送且将数据包描述符还至空闲队列。4.如权利要求1所述的高速数据包构造和分发控制方法,其特征在于,所述线程调度模块采用分组线程调度方法,每组线程内包含一个处理报文载荷构造模块的报文载荷构造线程、一个处理报文封装模块的报文封装线程和一个处理发送流量控制模块的发送流量控制线程;且线程分组内共享一个生产者/消费者队列。5.如权利要求1所述的高速数据包构造和分发控制方法,其特征在于,所述高速数据包构造和分发控制方法第二步中报文载荷构造线程步骤包括:步骤101、初始化空闲载荷队列,给空闲载荷队列分配空闲载荷缓存块;空闲载荷缓存块是由报文载荷构造线程从空闲载荷队列中读取并存储已构造数据的缓存块;步骤102、初始化构造载荷队列,报文载荷构造线程填充空闲载荷缓存块并插入至构造
\t载荷队列中;步骤103、判断空闲载荷队列是否为空,如果不为空则执行步骤104,否则继续执行步骤103;步骤104、从空闲载荷队列中取空闲载荷缓存块,读取构造配置数据生成载荷数据,并将载荷数据填充至空闲载荷缓存块;步骤105、判断构造载荷队列是否满,如果未满执行步骤107...

【专利技术属性】
技术研发人员:王飞陈曙晖王小峰李振兴罗艳孙一品刘宇靖
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:湖南;43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1