CN108900327B - 一种基于dpdk的天文数据采集和实时处理方法 - Google Patents
一种基于dpdk的天文数据采集和实时处理方法 Download PDFInfo
- Publication number
- CN108900327B CN108900327B CN201810632883.6A CN201810632883A CN108900327B CN 108900327 B CN108900327 B CN 108900327B CN 201810632883 A CN201810632883 A CN 201810632883A CN 108900327 B CN108900327 B CN 108900327B
- Authority
- CN
- China
- Prior art keywords
- data
- message
- dpdk
- ring
- buffer queue
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0823—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
- H04L41/083—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability for increasing network speed
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/622—Queue service order
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/10—Mapping addresses of different types
- H04L61/103—Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种基于DPDK的天文数据采集和实时处理方法,属于网络数据包处理领域。本发明包括的简要步骤是:构建DPDK运行环境;创建内存池;从环形缓冲中读取数据帧,并对帧头部解析及构造响应报文;UDP数据包进行合法校验,提取报文中数据部分;将提取的数据放在第二个环形缓冲区;CUDA程序从环形缓冲区读取数据并实时处理。本发明充分利用DPDK在处理高速IO情况下相较传统的基于内核TCP/IP协议栈的性能优势,通过无锁环形缓冲队列,在用户态下对TCP/IP协议栈做了部分实现,实现了在万兆网络环境下的数据包无丢失接收,相比基于传统协议栈的数据包接收有极大的性能提升。
Description
技术领域
本发明涉及一种基于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可以供构建高速转发类应用的访问,相关开源生态也不断壮大。
但目前还没有行之有效的方法可以有效解决万兆网络环境下天文数据采集和实时处理的问题。
发明内容
本发明要解决的技术问题是提供一种基于Intel DPDK的天文数据采集和实时处理方法,能有效解决万兆网络环境下天文数据采集和实时处理的问题。
本发明采用的技术方案是:
Step1、构建DPDK运行环境及第一环形缓冲队列,用于接收工作在DPDK模式下的网卡数据;
Step2、持续从第一环形缓冲队列中读取数据帧,并对帧头部进行解析,针对解析出不同的报文类型构造相应报文,操纵DPDK发送应答包,同时针对发送给本机的UDP数据进行合法性校验,将UDP报文中数据部分提取;
Step3、构造第二环形缓冲队列,将Step2中提取到的数据放入第二环形缓冲队列,CUDA程序从第二环形缓冲队列中读取数据,进行实时处理,处理完成的数据从第二环形缓冲队列中出队。
所述Step1中构建运行环境及第一环形缓冲队列的具体步骤如下:
Step1.1、启动配置,包括设置Linux内核参数、设置hugepage内存,加载用户态IO模块,使得当前物理端口脱离Linux内核协议栈的管理,改由Intel DPDK的用户态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进程将数据放入第二环形缓冲队列中具体步骤如下:
Step 3.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、对消色散的数据按照周期进行折叠处理以提高信噪比,将数据依次取为许多小段,每段数据时间长度为一个脉冲周期,然后将这些小段依次点对点相加,再除以折叠次数,得到的一个周期内的数据;
Step3.3.4、对处理完成的数据按脉冲星数据存储中常用的psrfits格式进行输出。
本发明的有益效果是:
基于操作系统的TCP/IP协议栈的数据接收在应对高IO情况的天文观测数据接收时显得相对冗余和低效,在应对高速数据包的处理上没有性能优势。而用户态网络IO技术相对基于操作系统的TCP/IP协议栈在数据接收性能上有着极大的性能优势,利用用户态网络IO技术可以实现对高IO环境下天文观测数据的高可靠性采集。基于目前脉冲星观测的数据以UDP封装高速发送的实际情况,在多核系统中实现基于TCP/IP的高速精简协议栈,并在协议层面使用更少的指令周期完成对天文观测数据的网络包的解码等预处理工作,针对天文观测数据包的常用传输技术的特点,实现高速采集技术下必须的协议栈子集,构建了一个通用的天文数据高速采集框架,方便用户调用。
GPU在并行及浮点运算等方面相比CPU有着数倍甚至数十倍的处理能力,在面对海量天文数据时,将CPU和GPU协同运用,将接收到的观测数据进行实时处理,极大的加速了天文观测数据各个关键环节的处理速度,在保证对观测数据实时接收的前提下实现了观测数据的实时处理。
附图说明
图1是本发明的总体步骤结构图;
图2是本发明的总体数据流程图;
图3是本发明的总体框架模型;
图4是环形缓冲数据入队过程的示例;
图5是端口及报文收发控制流程。
具体实施方式
下面结合附图和具体实施示例,详细说明本发明的具体实施方式。
实施例1:如图1-5所示,一种基于Intel DPDK的天文数据采集和实时处理方法,具体步骤如下:
Step1、构建DPDK运行环境及第一环形缓冲队列,用于接收工作在DPDK模式下的网卡数据;
Step2、持续从第一环形缓冲队列中读取数据帧,并对帧头部进行解析,针对解析出不同的报文类型构造相应报文,操纵DPDK发送应答包,同时针对发送给本机的UDP数据进行合法性校验,将UDP报文中数据部分提取;
Step3、构造第二环形缓冲队列,将Step2中提取到的数据放入第二环形缓冲队列,CUDA程序从第二环形缓冲队列中读取数据,进行实时处理,处理完成的数据从第二环形缓冲队列中出队。
进一步的,Step1中构建运行环境及缓冲队列的具体步骤如下:
Step1.1、启动配置,包括设置Linux内核参数、设置hugepage内存,加载用户态IO模块,使得当前物理端口脱离Linux内核协议栈的管理,改由Intel DPDK的用户态IO驱动进行管理;
程序开始时,首先会调用rte_eal_init()函数,查找系统中存在的网卡设备,之后初始化全局链表pci_device_list,将网卡设备挂载。之后调用rte_eal_dev_init()函数,执行网卡驱动对应回调函数,将网卡注册到PCI总线,rte_eal_init()读取入口参数,解析并保存作为DPDK运行的系统信息,依赖这些信息进行一系列初始化,构建一个针对包处理设计的运行环境,主要动作如图4所示。
接下来,程序会调用lcore_main()进行主处理流程。首先使用port_init()对指定端口设置队列,由于实际接收环境,只指定单核单队列。在收发两个方向上,基于端口和队列进行设置,缓冲区进行关联设置;使用rte_eth_dev_configure()对指定端口设置接收、发送方向的队列数目,依据配置信息来指定端口功能;使用rte_eth_rx_queue_setup()和rte_eth_tx_queue_setup()对指定端口的单个队列,指定内存、描述符数量、报文缓冲区,并对队列进行配置,使用rte_eth_dev_start()启动端口。
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处理。
所述step2.1-2.5具体案例实施内容如下:
在网卡初始化完成并后,程序开始进行报文收发控制。首先读取网卡的MAC地址,获取网卡的mtu值,如果不是9000则设置到9000,同时关闭网卡的混杂模式,避免接收所有报文。
对设备进行配置,申请一个接收队列RX,RX_RING的大小为512,使用rte_eth_tx_queue_setup()为以太网设备分配和设置传输队列,启用端口。
使用rte_eth_rx_burst()函数队列接收数据包并解析出以太网头部,ip头部,icmp头部,包头校验和,arp头部,udp头部,根据不同的协议分别使用对应的处理函数解析对应字段内容,分别送对应处理函数进行处理。每处里完一个包就使用rte_pktmbuf_free()释放掉继续循环,每循环一次就检查发送队列是否已满,如果是则调用rte_eth_tx_burst()将数据包全部发送出去,释放所占用的内存。如果超时也同样将缓存数据包全部发送并释放内存。
数据包到来时,一般采用在内存中开辟一个buffer的方式来存储数据,DPDK使用mbuf(内存缓冲区)来实现buffer的分配和释放。该缓冲区存储在Mempool(内存池)中,使用Mempool库进行管理。
Mbuf使用Mempool库来分配缓冲区,在网络三层处理中可以确保数据分组头以最佳的方式排列。一个mbuf包含一个域表示其原始内存池的位置,但内存释放时,可以返回到原始内存池中。相关操作如下:
1)获取数据长度:rte_pktmbuf_data_len(m)
2)获取数据其实地址指针:rte_ctrlmbuf_data(m)
3)在数据前新增数据:rte_pktmbuf_prepend(struct rte_mbuf*m,uint16_tlen)
4)在数据后添加数据:rte_pktmbuf_append(struct rte_mbuf*m,uint16_t len)
5)在缓冲区其实位置移除数据:rte_pktmbuf_adj(struct rte_mbuf*m,uint16_tlen)
6)在缓冲区尾部位置移除数据:rte_pktmbuf_trim(struct rte_mbuf*m,uint16_t len)
所述步骤Step3中CUDA程序从第二环形缓冲队列中读取数据具体步骤如下:
Step3.1、构造一个无锁且先进先出式的队列,维持生产者头部,生产者尾部,消费者头部和消费者尾部四个内存中对象的指针;
Step3.2、一个DPDK进程作为生产者在给定时间内将接收到的数据由尾部指针持续写入第二环形缓冲队列中;
Step3.3、多个CUDA进程作为消费者从第二环形缓冲队列头部读走数据进行处理,在处理完成后将已经处理完成的数据从缓冲区删除。
所述步骤Step3.2中DPDK进程将数据放入第二环形缓冲队列中具体步骤如下:
Step 3.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、对消色散的数据按照周期进行折叠处理以提高信噪比,将数据依次取为许多小段,每段数据时间长度为一个脉冲周期,然后将这些小段依次点对点相加,再除以折叠次数,得到的一个周期内的数据;
Step3.3.4、对处理完成的数据按脉冲星数据存储中常用的psrfits格式进行输出。
所述step3.2结合具体案例实施内容如下:
在生产者将数据放入第二环形缓冲区的同时消费者开始处理数据。生产者是唯一的,即由基于DPDK的天文数据采集框架采集的天文数据--而消费者是可以有多个的,即基于CUDA的数据处理线程,它们分别在每一个显卡设备上运行着,每有一个CUDA设备即多一个消费者,同时从第二环形缓冲区读取DPDK采集到的数据进行处理,确保数据处理的实时性。
在这种情况下,单靠无锁队列并不能保证数据的无冲突访问。消费者线程之间访问出队列元素时需要做到互斥访问,因此,需要借助锁机制实现,获得锁的消费者线程才可以执行,没有获得锁的线程只能暂时阻塞,在这里锁机制采用PV信号量实现。生产者操作接收数据包,然后尝试获取锁,如果获取成功则尝试入队操作,将数据包写入环形缓冲中,释放锁。消费者检索CUDA设备,根据传入的参数不同启用不同数目的CUDA设备,每个CUDA设备是一个消费者线程;线程尝试获得锁,如果获得成功则读取数据进行处理,如果不成功则等待。处理完的数据从第二环形缓冲队列中出队。
本发明充分利用DPDK在处理高速IO情况下相较传统的基于内核TCP/IP协议栈的性能优势,通过无锁环形缓冲队列,在用户态下对TCP/IP协议栈做了部分实现,实现了在万兆网络环境下的数据包无丢失接收,相比基于传统协议栈的数据包接收有极大的性能提升。本发明可作为高速IO环境下天文观测数据包可靠接收和实时处理的底层方法。
上面结合附图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
Claims (4)
1.一种基于DPDK的天文数据采集和实时处理方法,其特征在于:包括以下步骤:
Step1、构建DPDK运行环境及第一环形缓冲队列,用于接收工作在DPDK模式下的网卡数据;
Step2、持续从第一环形缓冲队列中读取数据帧,并对帧头部进行解析,针对解析出不同的报文类型构造相应报文,操纵DPDK发送应答包,同时针对发送给本机的UDP数据进行合法性校验,将UDP报文中数据部分提取;
Step3、构造第二环形缓冲队列,将Step2中提取到的数据放入第二环形缓冲队列,CUDA程序从第二环形缓冲队列中读取数据,进行实时处理,处理完成的数据从第二环形缓冲队列中出队;
所述Step3中CUDA程序从第二环形缓冲队列中读取数据具体步骤如下:
Step3.1、构造一个无锁且先进先出式的队列,维持生产者头部、生产者尾部、消费者头部和消费者尾部四个内存中对象的指针;
Step3.2、一个DPDK进程作为生产者在给定时间内将接收到的数据由尾部指针持续写入第二环形缓冲队列中;
Step3.3、多个CUDA进程作为消费者从第二环形缓冲队列头部读走数据进行处理,在处理完成后将已经处理完成的数据从缓冲区删除;
所述Step3.3中CUDA进程对数据处理的具体步骤如下:
Step3.3.1、将原始的二进制数据转换成浮点型数据,以便后边消色散进行傅立叶变换使用;
Step3.3.2、对解码过后的数据作傅立叶变换,变换结果乘星际介质chirp函数,再反傅立叶变换回到时域得到消色散的时域信号;
Step3.3.3、对消色散的数据按照周期进行折叠处理以提高信噪比,将数据依次取为许多小段,每段数据时间长度为一个脉冲周期,然后将这些小段依次点对点相加,再除以折叠次数,得到的一个周期内的数据;
Step3.3.4、对处理完成的数据按脉冲星数据存储中常用的psrfits格式进行输出。
2.根据权利要求1所述的基于DPDK的天文数据采集和实时处理方法,其特征在于:所述的Step1中构建运行环境及第一环形缓冲队列的具体步骤如下:
Step1.1、启动配置,包括设置Linux内核参数、设置hugepage内存,加载用户态IO模块,使得当前物理端口脱离Linux内核协议栈的管理,改由Intel DPDK的用户态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处理函数对送达的报文首先进行合法性校验,不合法报文直接丢弃,对于合法ICMP报文则构造响应报文,并回送源主机;
Step2.5、UDP处理函数将送达的报文解析,检查其目的端口号是否与预先设定好的端口号一致,如果不一致则直接丢弃,如果一致则说明是新到达的有效数据,剥离其UDP头部,取出其数据部分,构造并放入第二环形缓冲队列中待后续CUDA处理。
4.根据权利要求1所述的基于DPDK的天文数据采集和实时处理方法,其特征在于:所述Step3.2中DPDK进程将数据放入第二环形缓冲队列中具体步骤如下:
Step 3.2.1、ring->prod_head和ring->cons_tail被复制到局部变量中,p rod_next局部变量指向表的下一个元素,或者在批量排队之后的几个元素,如果环中没有足够的空间,它将返回一个错误;
Step3.2.2、修改ring结构中的ring->prod_head以指向与prod_next相同的位置,指向添加对象的指针被复制到环中;
Step3.2.3、一旦对象添加到环中,环结构中的ring->prod_tail将被修改为指向与ring->prod_head相同的位置,入队操作完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810632883.6A CN108900327B (zh) | 2018-06-20 | 2018-06-20 | 一种基于dpdk的天文数据采集和实时处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810632883.6A CN108900327B (zh) | 2018-06-20 | 2018-06-20 | 一种基于dpdk的天文数据采集和实时处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108900327A CN108900327A (zh) | 2018-11-27 |
CN108900327B true CN108900327B (zh) | 2021-06-18 |
Family
ID=64345165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810632883.6A Active CN108900327B (zh) | 2018-06-20 | 2018-06-20 | 一种基于dpdk的天文数据采集和实时处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108900327B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110048963B (zh) * | 2019-04-19 | 2023-06-06 | 杭州朗和科技有限公司 | 虚拟网络中的报文传输方法、介质、装置和计算设备 |
CN112217772B (zh) * | 2019-07-11 | 2022-07-01 | 中移(苏州)软件技术有限公司 | 一种协议栈实现方法、装置和存储介质 |
CN110830385A (zh) * | 2019-09-25 | 2020-02-21 | 上海数荃数据科技有限公司 | 一种捕包处理方法、网络设备、服务器及存储介质 |
CN110719234A (zh) * | 2019-10-17 | 2020-01-21 | 南京中孚信息技术有限公司 | 一种基于dpdk的数据包处理方法及装置 |
CN111274049A (zh) * | 2020-01-17 | 2020-06-12 | 成都鼎安华智慧物联网股份有限公司 | 一种基于异构并行加速的高效多路视频分析方法 |
CN111292222B (zh) * | 2020-01-22 | 2023-05-12 | 中国科学院新疆天文台 | 一种脉冲星消色散装置及方法 |
CN111683111B (zh) * | 2020-04-17 | 2021-04-06 | 中国人民解放军战略支援部队航天工程大学 | 一种基于gpu的干涉测量多相信道化基带转换系统 |
CN111767154B (zh) * | 2020-06-19 | 2024-06-25 | 北京思特奇信息技术股份有限公司 | 用于无阻塞通讯的无锁环形队列实现方法 |
CN111884876A (zh) * | 2020-07-22 | 2020-11-03 | 杭州安恒信息技术股份有限公司 | 一种网络协议的协议类型检测方法、装置、设备及介质 |
CN112055015B (zh) * | 2020-09-02 | 2023-06-06 | 许继集团有限公司 | 一种电力保护装置站控层网络数据处理方法 |
CN112637173B (zh) * | 2020-12-16 | 2024-02-27 | 南京丹迪克科技开发有限公司 | 一种电能质量测试分析仪检定装置上位机控制通信方法 |
CN113518270A (zh) * | 2021-05-24 | 2021-10-19 | 北京邮电大学 | 面向移动网络的异构数据采集装置和方法 |
CN113765785B (zh) * | 2021-08-19 | 2022-07-05 | 东北大学 | 基于dpdk的多路径传输方法 |
CN114710570B (zh) * | 2022-03-16 | 2023-08-25 | 深圳市风云实业有限公司 | 一种基于内核态协议栈的udp数据零拷贝传输方法 |
CN115801770B (zh) * | 2023-02-07 | 2023-04-18 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 一种基于全用户态quic协议的大文件传输方法 |
CN116846991A (zh) * | 2023-07-11 | 2023-10-03 | 中科驭数(北京)科技有限公司 | 网络应用数据转发方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107360268A (zh) * | 2017-06-23 | 2017-11-17 | 北京奇艺世纪科技有限公司 | 一种数据包处理方法、装置及设备 |
CN107623632A (zh) * | 2017-08-10 | 2018-01-23 | 赛尔网络有限公司 | 基于dpdk的网络协议的连接方法及系统 |
CN107948071A (zh) * | 2016-10-12 | 2018-04-20 | 北京金山云网络技术有限公司 | 报文转发方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160275026A1 (en) * | 2015-03-20 | 2016-09-22 | Intel Corporation | Weakly ordered doorbell |
-
2018
- 2018-06-20 CN CN201810632883.6A patent/CN108900327B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107948071A (zh) * | 2016-10-12 | 2018-04-20 | 北京金山云网络技术有限公司 | 报文转发方法及装置 |
CN107360268A (zh) * | 2017-06-23 | 2017-11-17 | 北京奇艺世纪科技有限公司 | 一种数据包处理方法、装置及设备 |
CN107623632A (zh) * | 2017-08-10 | 2018-01-23 | 赛尔网络有限公司 | 基于dpdk的网络协议的连接方法及系统 |
Non-Patent Citations (3)
Title |
---|
DPDK l3fwd;mylinuxer;《https://www.cnblogs.com/mylinuxer/p/4647783.html》;20150715;全文 * |
DPDK结构下类Socket接口研究与设计;周末;《中国优秀硕士学位论文全文数据库》;20170215;第3章 * |
Programmer’s Guide-DPDK;Intel;《https://fast.dpdk.org/doc/pdf-guides-17.08/prog_guide-17.08.pdf》;20180423;第4、5章 * |
Also Published As
Publication number | Publication date |
---|---|
CN108900327A (zh) | 2018-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108900327B (zh) | 一种基于dpdk的天文数据采集和实时处理方法 | |
US11392529B2 (en) | Systems and method for mapping FIFOs to processor address space | |
US9465662B2 (en) | Processor with efficient work queuing | |
US7870306B2 (en) | Shared memory message switch and cache | |
US10693787B2 (en) | Throttling for bandwidth imbalanced data transfers | |
US10838873B2 (en) | Method, apparatus, and computer program product for managing addresses in distributed system | |
US9678866B1 (en) | Transactional memory that supports put and get ring commands | |
US9280297B1 (en) | Transactional memory that supports a put with low priority ring command | |
US7409468B2 (en) | Controlling flow of data between data processing systems via a memory | |
EP3831017A1 (en) | Advanced network tracing in the data plane | |
US20180212889A1 (en) | Multi-core lock-free rate limiting apparatus and method | |
US10228869B1 (en) | Controlling shared resources and context data | |
US10452570B1 (en) | Presenting physical devices to virtual computers through bus controllers emulated on PCI express endpoints | |
US20220217085A1 (en) | Server fabric adapter for i/o scaling of heterogeneous and accelerated compute systems | |
CN115086310B (zh) | 一种高吞吐量、低延迟的数据包转发方法 | |
EP4020933A1 (en) | Methods and apparatus to process data packets for logical and virtual switch acceleration in memory | |
CN116074131A (zh) | 一种数据处理方法、智能网卡和电子设备 | |
US11343176B2 (en) | Interconnect address based QoS regulation | |
Fu et al. | FAS: Using FPGA to accelerate and secure SDN software switches | |
US20220166718A1 (en) | Systems and methods to prevent packet reordering when establishing a flow entry | |
KR20220121093A (ko) | 상용 이더넷 장비 기반의 gpu 내부 패킷 입출력 방법 및 장치 | |
US20150089165A1 (en) | Transactional memory that supports a get from one of a set of rings command | |
Hong et al. | Kafe: Can os kernels forward packets fast enough for software routers? | |
Larin et al. | Tools for Capturing and Processing High-Speed Network Traffic | |
Lei et al. | Accelerating Packet Processing in Container Overlay Networks via Packet-level Parallelism |
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 |