一种基于DPDK的天文数据采集和实时处理方法技术

技术编号:19597860 阅读:40 留言:0更新日期:2018-11-28 06:28
本发明专利技术涉及一种基于DPDK的天文数据采集和实时处理方法,属于网络数据包处理领域。本发明专利技术包括的简要步骤是:构建DPDK运行环境;创建内存池;从环形缓冲中读取数据帧,并对帧头部解析及构造响应报文;UDP数据包进行合法校验,提取报文中数据部分;将提取的数据放在第二个环形缓冲区;CUDA程序从环形缓冲区读取数据并实时处理。本发明专利技术充分利用DPDK在处理高速IO情况下相较传统的基于内核TCP/IP协议栈的性能优势,通过无锁环形缓冲队列,在用户态下对TCP/IP协议栈做了部分实现,实现了在万兆网络环境下的数据包无丢失接收,相比基于传统协议栈的数据包接收有极大的性能提升。

【技术实现步骤摘要】
一种基于DPDK的天文数据采集和实时处理方法
本专利技术涉及一种基于DPDK的天文数据采集与实时处理方法,属于网络数据包处理

技术介绍
对射电脉冲星的研究是现代天文学的重要内容及热点领域。以射电脉冲星作为工具,可开展高精度计时和守时、天体动力学和天体测量、强场下的引力物理、太阳系外行星、星系和星际介质、超致密物质以及极端环境下的等离子物理等方面的研究。随着近年来利用毫秒脉冲星进行引力波探测研究、脉冲星导航等课题的兴起,对脉冲星观测设备提出了更高的观测带宽的需求,从而对由此而产生的高速的数据流的采集、处理和传输提出了更高的性能指标要求。由于宽带脉冲星的观测需求要求更高的观测带宽和采样精度,导致数字基带转换器产生的观测数据激增。为了提高数据传输速率,新的数据传输系统的底层硬件已经采用10Gb、40Gb甚至100Gb的以太网技术。针对高速以太网下的数据采集和实时处理,不仅仅是宽带脉冲星观测面对的问题,也是众多射电观测装置所面临的一个关键共性问题。传统的socket技术结合对操作系统进行参数调优,采用更大的MTU值,网卡中断coalescing,线程绑定,只能有限的提高网络吞吐率。近年来,基于用户态网络IO成为在网络嗅探、入侵检测以及云计算领域的研究热点,如netmap、PF_RING、DPDK等技术,这些技术在国外的射电观测数据的处理上,已经开始有相关的研究。2010年前后,Intel公司通过从自身处理器结构和经济性考虑,前瞻性地对多核调度和轮询处理技术进行了大量研究,DPDK应运而生,并且日益发展壮大。与netmap等其他近似的开源技术相比,DPDK不仅有着更为完善的产业生态环境,而且有着Intel等大厂的支持,因此,DPDK已经成为大量互联网公司和NFV开发商在x86架构下进行网络加速的首选技术。DPDK运行环境建立在Linux上,通过EAL(环境抽象层)的运行初始化,包括巨页分配、内存/缓冲区/队列分配与无锁操作、CPU亲和性绑定等;其次,EAL实现了对操作系统内核与底层网卡IO操作的屏蔽(IO旁路了内核及其协议栈),为DPDK应用程序提供了一组调用接口,通过UIO或VFIO技术将PCI设备地址映射到用户空间,方便了应用程序的调用,避免了网络协议栈和内核切换造成的处理时延。另外,核心部件还包括创建适合报文处理的内存池、缓冲区分配管理、内存复制、定时器、环形缓冲区管理等等。DPDK有着完善的性能加速整体架构,并提供了丰富的用户态API可以供构建高速转发类应用的访问,相关开源生态也不断壮大。但目前还没有行之有效的方法可以有效解决万兆网络环境下天文数据采集和实时处理的问题。
技术实现思路
本专利技术要解决的技术问题是提供一种基于IntelDPDK的天文数据采集和实时处理方法,能有效解决万兆网络环境下天文数据采集和实时处理的问题。本专利技术采用的技术方案是:Step1、构建DPDK运行环境及第一环形缓冲队列,用于接收工作在DPDK模式下的网卡数据;Step2、持续从第一环形缓冲队列中读取数据帧,并对帧头部进行解析,针对解析出不同的报文类型构造相应报文,操纵DPDK发送应答包,同时针对发送给本机的UDP数据进行合法性校验,将UDP报文中数据部分提取;Step3、构造第二环形缓冲队列,将Step2中提取到的数据放入第二环形缓冲队列,CUDA程序从第二环形缓冲队列中读取数据,进行实时处理,处理完成的数据从第二环形缓冲队列中出队。所述Step1中构建运行环境及第一环形缓冲队列的具体步骤如下:Step1.1、启动配置,包括设置Linux内核参数、设置hugepage内存,加载用户态IO模块,使得当前物理端口脱离Linux内核协议栈的管理,改由IntelDPDK的用户态IO驱动进行管理;Step1.2、构建第一环形缓冲队列,采用轮询模式从网卡获取数据包;其中第一环形缓冲队列采用无锁结构设计,第一环形缓冲队列中数据包所存储的地址信息采用实地址映射的方式;Step1.3、对指定端口进行设置,包括指定端口的队列,在收发两个方向上基于端口和队列进行配置,指定端口接收发送方向的队列,对第一环形缓冲队列进行关联设置;Step1.4、网卡初始化配置结束后启动端口,读取MAC地址打开网卡的混杂模式,允许所有报文进入。所述步骤Step2中内核协议栈报文的解析的具体步骤如下:Step2.1、首先对接收到第一环形缓冲队列的数据帧按照以太网帧格式,分别解析出以太网帧中所包含的源目的地址、类型字段,将IP报文交由IP报文处理函数处理,ARP报文交由ARP报文处理函数处理;Step2.2、ARP报文处理函数对送达的报文进行解析,分别解析出ARP协议中的各个字段,对协议长度或者硬件地址不合法的报文予以丢弃,之后校验其合法性,对非以太网ARP请求或者非IPv4协议的ARP请求予以丢弃,对合法的报文构造其响应报文,放入发送队列等待发送;Step2.3、IP报文处理函数对于送达的报文进行解析,匹配其对应的协议字段。之后对IP包头做合法性校验,对于不合法报文直接丢弃,之后将ICMP报文及UDP报文交给相应的报文处理函数处理;Step2.4、ICMP处理函数对送达的报文首先进行合法性校验,不合法报文直接丢弃,对于合法ICMP报文则构造响应报文,并回送源主机;Step2.5、UDP处理函数将送达的报文解析,检查其目的端口号是否与预先设定好的端口号一致,如果不一致则直接丢弃,如果一致则说明是新到达的有效数据,剥离其UDP头部,取出其数据部分,构造并放入第二环形缓冲队列中待后续CUDA处理。所述步骤Step3中CUDA程序从第二环形缓冲队列中读取数据具体步骤如下:Step3.1、构造一个无锁且先进先出式的队列,维持生产者头部,生产者尾部,消费者头部和消费者尾部四个内存中对象的指针;Step3.2、一个DPDK进程作为生产者在给定时间内将接收到的数据由尾部指针持续写入第二环形缓冲队列中;Step3.3、多个CUDA进程作为消费者从第二环形缓冲队列头部读走数据进行处理,在处理完成后将已经处理完成的数据从缓冲区删除。所述步骤Step3.2中DPDK进程将数据放入第二环形缓冲队列中具体步骤如下:Step3.2.1、ring->prod_head和ring->cons_tail被复制到局部变量中。Prod_next局部变量指向表的下一个元素,或者在批量排队之后的几个元素,如果环中没有足够的空间,它将返回一个错误;Step3.2.2、修改ring结构中的ring->prod_head以指向与prod_next相同的位置,指向添加对象的指针被复制到环中;Step3.2.3、一旦对象添加到环中,环结构中的ring->prod_tail将被修改为指向与ring->prod_head相同的位置,入队操作完成。所述步骤Step3.3中CUDA进程对数据处理的具体步骤如下:Step3.3.1、将原始的二进制数据转换成浮点型数据,以便后边消色散进行傅立叶变换使用;Step3.3.2、对解码过后的数据作傅立叶变换,变换结果乘星际介质chirp函数,再反傅立叶变换回到时域得到消色散的时域信号;Step3.3.3、对消色本文档来自技高网
...

【技术保护点】
1.一种基于DPDK的天文数据采集和实时处理方法,其特征在于:包括以下步骤:Step1、构建DPDK运行环境及第一环形缓冲队列,用于接收工作在DPDK模式下的网卡数据;Step2、持续从第一环形缓冲队列中读取数据帧,并对帧头部进行解析,针对解析出不同的报文类型构造相应报文,操纵DPDK发送应答包,同时针对发送给本机的UDP数据进行合法性校验,将UDP报文中数据部分提取;Step3、构造第二环形缓冲队列,将Step2中提取到的数据放入第二环形缓冲队列,CUDA程序从第二环形缓冲队列中读取数据,进行实时处理,处理完成的数据从第二环形缓冲队列中出队。

【技术特征摘要】
1.一种基于DPDK的天文数据采集和实时处理方法,其特征在于:包括以下步骤:Step1、构建DPDK运行环境及第一环形缓冲队列,用于接收工作在DPDK模式下的网卡数据;Step2、持续从第一环形缓冲队列中读取数据帧,并对帧头部进行解析,针对解析出不同的报文类型构造相应报文,操纵DPDK发送应答包,同时针对发送给本机的UDP数据进行合法性校验,将UDP报文中数据部分提取;Step3、构造第二环形缓冲队列,将Step2中提取到的数据放入第二环形缓冲队列,CUDA程序从第二环形缓冲队列中读取数据,进行实时处理,处理完成的数据从第二环形缓冲队列中出队。2.根据权利要求书1所述的基于DPDK的天文数据采集和实时处理方法,其特征在于:所述的Step1中构建运行环境及第一环形缓冲队列的具体步骤如下:Step1.1、启动配置,包括设置Linux内核参数、设置hugepage内存,加载用户态IO模块,使得当前物理端口脱离Linux内核协议栈的管理,改由IntelDPDK的用户态IO驱动进行管理;Step1.2、构建第一环形缓冲队列,采用轮询模式从网卡获取数据包;其中第一环形缓冲队列采用无锁结构设计,第一环形缓冲队列中数据包所存储的地址信息采用实地址映射的方式;Step1.3、对指定端口进行设置,包括指定端口的队列,在收发两个方向上基于端口和队列进行配置,指定端口接收发送方向的队列,对第一环形缓冲队列进行关联设置;Step1.4、网卡初始化配置结束后启动端口,读取MAC地址打开网卡的混杂模式,允许所有报文进入。3.根据权利要求书1所述的基于DPDK的天文数据采集和实时处理方法,其特征在于:所述步骤Step2中对帧头部进行解析的具体步骤如下:Step2.1、首先对接收到第一环形缓冲队列的数据帧按照以太网帧格式,分别解析出以太网帧中所包含的源目的地址、类型字段,将IP报文交由IP报文处理函数处理,ARP报文交由ARP报文处理函数处理;Step2.2、ARP报文处理函数对送达的报文进行解析,分别解析出ARP协议中的各个字段,对协议长度或者硬件地址不合法的报文予以丢弃,之后校验其合法性,对非以太网ARP请求或者非IPv4协议的ARP请求予以丢弃,对合法的报文构造其响应报文,放入发送队列等待发送;Step2.3、IP报文处理函数对于送达的报文进行解析,匹配其对应的协议字段,之后对IP包头做合法性校验,对于不合法报文直接丢弃,之后将ICMP报文及UDP报文交给相应的报文处理函数处理;Step2.4、ICMP处理函数对送达的报文首先进行合法性校验,不合法报文直接丢弃,...

【专利技术属性】
技术研发人员:戴伟朱彦飞王锋张晓丽罗静
申请(专利权)人:昆明理工大学
类型:发明
国别省市:云南,53

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

1