CN102402487B - 一种零拷贝接收报文的方法和系统 - Google Patents

一种零拷贝接收报文的方法和系统 Download PDF

Info

Publication number
CN102402487B
CN102402487B CN201110361904.3A CN201110361904A CN102402487B CN 102402487 B CN102402487 B CN 102402487B CN 201110361904 A CN201110361904 A CN 201110361904A CN 102402487 B CN102402487 B CN 102402487B
Authority
CN
China
Prior art keywords
address
page
packet
user
access
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
Application number
CN201110361904.3A
Other languages
English (en)
Other versions
CN102402487A (zh
Inventor
刘彤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Topsec Technology Co Ltd
Original Assignee
Beijing Topsec Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Topsec Technology Co Ltd filed Critical Beijing Topsec Technology Co Ltd
Priority to CN201110361904.3A priority Critical patent/CN102402487B/zh
Publication of CN102402487A publication Critical patent/CN102402487A/zh
Application granted granted Critical
Publication of CN102402487B publication Critical patent/CN102402487B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种零拷贝接收报文的方法和系统,所述方法包括:用户态进程打开预先创建的虚拟字符设备,调用mmap方法;内核态进程在mmap方法被调用时,将所有内核低端空间映射到用户空间,并为其的结构vm_area_struct设置nopage方法;内核态进程在网卡设备接收到数据包时,将数据包在低端内存空间中的偏移地址传递给用户态进程;用户态进程访问计算出的虚拟地址,触发CPU缺页异常,使得操作系统调用nopage方法得到要访问的物理地址对应的页目录和页表项;用户态进程读取存储在所述低端内核地址空间内的所述数据包。本发明解决了已有零拷贝技术缓冲区不足以及零拷贝过程中报文不能被任意修改或移动的问题。

Description

一种零拷贝接收报文的方法和系统
技术领域
本发明涉及高速网络收包领域,尤其涉及一种零拷贝接收报文的方法和系统。
背景技术
在Linux操作系统中,用户态程序捕获网卡接收到的数据包一般是通过套接字相关的系统调用:网卡通过DMA(Direct Memory Access,直接内存存取)机制将网络数据包接收到内核空间,进程通过读套接字将数据从内核空间复制到用户空间。在这种模式下,用户进程接收数据需要一次从内核到用户空间的数据复制。在高速网络中,大量的数据拷贝极大的消耗了CPU资源,系统调用会引起操作系统上下文切换,降低了系统性能。
为了解决这个问题,目前存在一种零拷贝技术,该零拷贝的思想是:数据包在从网卡到达用户空间的过程中,通过硬件DMA技术和操作系统MMAP(Memory Map)技术,将报文直接送到用户空间,实现CPU的零参与,彻底消除CPU在这方面的损耗。上述零拷贝技术需要修改网卡驱动,当网卡驱动升级时,还需要做相应的修改。
具体地,现在的零拷贝普遍采用的做法,如图1所示,包括:先在内核中分配一片固定的空间,将这块空间分成多个固定长度的数据块,组成一个队列;然后修改网卡驱动程序,更改为接收缓冲区分配内存的函数,所有内存都从上述队列中分配;调用MMAP系统调用将上述队列映射到用户空间;网卡驱动收到数据后,给数据块设置标记,表示数据接收完成;用户空间根据标记,直接读取数据。
然而,上述零拷贝技术存在以下缺陷:
上述的零拷贝技术可以应用于IDS(Intrusion Detection System,入侵检测系统)等监听性质的应用中。因为IDS只需要简单的将报文送到IDS检测引擎,不需要经过其他模块。但是在UTM(Unified Threat Management,企业上网安全隐患)中,由于数据在送到运行于用户空间的IPS(Intrusion Protection System,互联网协议群)等引擎时,要经过TCP/IP协议栈,在协议栈里完成IP碎片重组等操作,导致报文长度、位置发生变化,不再处于上述的队列中,从用户空间就无法读取这段数据。且上述的固定空间由于大小受限制,在网络突发高峰的时候,会产生缓冲区不足导致丢包的情况。
发明内容
本发明提供一种零拷贝接收报文的方法和系统,用以解决现有技术中采用的零拷贝技术不能读取缓冲区中变化的数据,以及在网络高峰期时由于缓冲区不足导致丢包等问题。
为了解决上述技术问题,本发明采用的技术方案如下:
一方面,本发明提供一种零拷贝接收报文的方法,包括:
用户态进程打开预先创建的虚拟字符设备,调用所述虚拟字符设备提供的mmap方法;内核态进程在所述mmap方法被调用时,将所有内核低端空间映射到用户空间,并为所述内核低端空间的结构vm_area_struct设置nopage方法;
内核态进程在网卡设备接收到数据包时,基于所述数据包在所述内核低端空间中的地址,得到数据包存储偏移地址后传递给用户态进程;
用户态进程根据所述偏移地址计算得到待访问的虚拟地址,并在访问所述虚拟地址时,触发CPU缺页异常,使得操作系统调用所述nopage方法得到要访问的物理地址对应的页目录和页表项;
用户态进程基于所述页目录和页表项,读取存储在所述内核低端空间内的所述数据包。
进一步地,本发明所述方法中,所述用户态进程根据所述偏移地址计算得到待访问的虚拟地址的方式包括:
所述用户态进程将所述数据包的存储偏移地址加上映射的用户空间地址,得到读取所述数据包所需访问的虚拟地址。
进一步地,本发明所述方法中,所述操作系统调用所述nopage方法得到要访问的物理地址对应的页目录和页表项,具体包括:
操作系统将要访问的所述虚拟地址减去所述用户空间的起始虚拟地址,得到一个偏移地址,并根据该偏移地址得到要访问的物理地址;
操作系统将所述物理地址右移PAGE_SHIFT位转换成页帧号,再调用pfn_to_page函数返回page结构指针;
操作系统取得所述page结构指针后,为所述物理地址设置页目录和页表项。
进一步地,本发明所述方法中,所述操作系统调用所述nopage方法得到要访问的物理地址对应的页目录和页表项前,还包括:
所述操作系统调用缺页异常处理函数检测所述虚拟地址所在用户空间的合法性,当所述用户空间合法时,调用所述nopage方法。
进一步地,本发明所述方法中,所述网卡设备接收到所述数据包时,具体包括:
所述网卡驱动调用系统函数alloc_skb()为网卡分配缓存,并利用所述系统函数alloc_skb()调用内存分配函数kmalloc()分配内存块;
所述网卡驱动通过直接内存存取方式将所述数据包存到所述缓存中。
其中,所述网卡驱动将所述数据包存到所述缓存后还包括:操作系统的TCP/IP协议栈对所述数据包进行处理。
另一方面,本发明还提供一种零拷贝接收报文的系统,包括:
初始化模块,用于打开预先创建的虚拟字符设备,调用所述虚拟字符设备提供的mmap方法;
映射模块,用于在所述mmap方法被调用时,将所有内核低端空间映射到用户空间,并为所述内核低端空间的结构vm_area_struct设置nopage方法;
地址计算模块,用于在网卡设备接收到数据包时,基于所述数据包在所述内核低端空间中的地址,得到数据包存储偏移地址后传递给地址访问模块;
地址访问模块,用于根据所述偏移地址计算得到待访问的虚拟地址,并在访问所述虚拟地址时,触发CPU缺页异常;
Page获取模块,用于在所述地址访问模块触发CPU缺页异常时,调用所述nopage方法得到要访问的物理地址对应的页目录和页表项;
报文读取模块,用于基于所述物理地址对应的页目录和页表项,读取存储在所述内核低端空间内的所述数据包。
进一步地,本发明所述系统中,所述Page获取模块具体包括:
物理地址计算子模块,用于将要访问的所述虚拟地址减去所述用户空间的起始虚拟地址,得到一个偏移地址,并根据该偏移地址计算要访问的物理地址;
Page指针获取子模块,用于将所述物理地址右移PAGE_SHIFT位转换成页帧号,再调用pfn_to_page函数返回page结构指针;
Page项设置子模块,用于在所述Page指针获取模块取得所述page结构指针后,为所述物理地址设置页目录和页表项。
进一步地,本发明所述系统中,所述地址计算模块具体用于,将所述数据包的存储偏移地址加上映射的用户空间地址,得到读取所述数据包所需访问的虚拟地址。
进一步地,本发明所述系统中,所述网卡设备具体包括:
数据包接收模块,用于接收到所述数据包时,调用系统函数alloc_skb()为网卡分配缓存,并利用所述系统函数alloc_skb()调用内存分配函数kmalloc()分配内存块;
数据包存储模块,用于通过直接内存存取方式将所述数据包存到所述缓存中。
与现有技术相比,本发明有益效果如下:
首先,本发明克服了为网卡分配固定缓存区存在的缓冲区不足的问题,提高了系统在高峰时的处理能力。
其次,本发明解决了常规零拷贝过程中报文不能被任意修改或移动的问题。
第三,本发明不需要修改现有的网卡驱动,改造成本为零。
附图说明
图1为现有技术中零拷贝技术的实现示意图;
图2为本发明提供的一种零拷贝接收报文的方法流程图;
图3为本发明实施例中所述零拷贝接收报文的方法示意图;
图4为本发明提供的一种零拷贝接收报文的系统结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决现有技术中采用的零拷贝技术不能读取缓冲区中变化的数据,以及在网络高峰期时由于缓冲区不足导致丢包等问题,本发明提供一种零拷贝接收报文的方法和系统。
如图2所示,本发明提供的零拷贝接收报文的方法,包括:
步骤S201、用户态进程打开预先创建的虚拟字符设备,调用所述虚拟字符设备提供的mmap方法;内核态进程在所述mmap方法被调用时,将所有内核低端空间映射到用户空间,并为所述内核低端空间的结构vm_area_struct设置nopage方法;
步骤S202、内核态进程在网卡设备接收到数据包时,基于所述数据包在所述内核低端空间中的地址,得到数据包存储偏移地址后传递给用户态进程;
步骤S203、用户态进程根据所述偏移地址计算得到待访问的虚拟地址,并在访问所述虚拟地址时,触发CPU缺页异常,使得操作系统调用所述nopage方法得到要访问的物理地址对应的页目录和页表项;
具体地,该步骤中,用户态进程根据所述偏移地址计算得到待访问的虚拟地址的方式包括:用户态进程将所述数据包的存储偏移地址加上映射的用户空间地址,得到读取所述数据包所需访问的虚拟地址。
具体地,该步骤中,操作系统调用所述nopage方法得到要访问的物理地址对应的页目录和页表项,包括:
(1)操作系统将要访问的所述虚拟地址减去所述用户空间的起始虚拟地址,得到一个偏移地址,并根据该偏移地址得到要访问的物理地址;
(2)操作系统将所述物理地址右移PAGE_SHIFT位转换成页帧号,再调用pfn_to_page函数返回page结构指针;
(3)操作系统取得所述page结构指针后,为所述物理地址设置页目录和页表项。
步骤S204、用户态进程基于所述页目录和页表项,读取存储在所述内核低端空间内的所述数据包。
为了更清楚的表述本发明,下面给出本发明的一个较佳实施例,并结合对实施例的描述进一步给出本发明的技术细节。
本发明实施例所述的零拷贝接收报文的方法示意图如图3所示,所述零拷贝接收报文方法具体通过如下几个过程实现:
一,创建虚拟字符设备;
内核态进程用register_chrdev函数创建一个虚拟的字符设备,并初始化其file_operations结构,初始化与该虚拟字符设备相关的内存映射(mmap)方法;
其中,内存映射方法具体为:初始化内存空间控制结构vm_area_struct,设置其nopage方法。
其中,file_operations结构定义如下:
即,虚拟字符设备可以有以下操作:打开、释放、读、写、推、解锁以及mmap内存映射方法。
本发明实施例中,创建虚拟字符设备是为了使用虚拟字符设备提供的mmap方法(即上述结构中的ipq_mma0070),所述mmap方法用于将所有低端内核空间(低端内存)映射到用户空间。在典型的32位Linux系统中,低端内存的物理地址是0~0x30000000,总大小768M字节,远小于用户进程拥有的地址空间3G字节。
另外,需要注意的是,本发明实施例所述mmap方法并不立即为用户态进程设置低端内存的内存页目录和页表项,只是简单的为表示该低端内存空间的结构vm_area_struct(虚拟内存区域)设置nopage方法,页目录和页表项是在过程中发生缺页异常时设置的。
其中,为vm_area_sturct设置nopage方法通过代码实现如下:
即,表示vm_area_sturct可以进行打开、关闭以及实现nopage方法。
二,用户态进程数据包接收初始化;
用户态进程打开创建的虚拟字符设备,获得文件描述符;其中,虚拟字符设备打开方法实现如下:fd=open(″/dev/ipq″,O_RDWR);
用户态进程调用sysinfo函数获取内核低端内存的大小;
用户态进程调用虚拟字符设备提供的mmap内存映射方法;
内核态进程在mmap内存映射方法被调用时,将所有的低端内存映射到用户空间,并为内存空间的控制结构vm_area_struct设置nopage方法。
其中,mmap内存映射操作的返回值就是映射内存的用户空间地址,用户态程序访问这段用户空间地址实际上就是访问整个内核态的低端内存空间。
三,网卡设备接收数据包;
1,网卡驱动调用操作系统的alloc_skb()函数为网卡分配缓存,所述alloc_skb()函数会调用kmalloc()函数分配大约2K大小的内存块;其中,kmalloc()函数的参数是GFP_ATOMIC,所以内存块都是从操作系统的低端内存中分配的,这就是数据包接收程序只映射低端内存,就能够随意访问报文的原因。
2,网卡驱动通过DMA方式将数据包存到缓存中,且所述缓存中的数据包可以通过操作系统中的TCP/IP协议栈进行处理。
四,用户态进程读取缓存内的数据包;
当网卡设备将接收的数据包存到缓存后,内核态进程负责计算数据包存储在内核低端内存的存储偏移地址,并将该偏移地址传送给用户态进程kmem_offset=(__u32)skb->data-PAGE_OFFSET;
用户态进程将所述偏移地址加上映射地址就得到读取相应数据包所需访问的虚拟地址,即:char*bp=(unsigned char*)rg.kmem+kmem_offset;
当用户态进程第一次试图访问用户空间的上述虚拟地址时,会触发CPU缺页异常,操作系统的缺页异常处理函数在确认该用户空间合法后,会调用nopage方法,得到该用户空间所在页对应的物理页面,然后为该物理页设置页目录和页表项,用户态进程得到相应的页目录和页表项后,即可读取低端内存内缓存的数据包。
其中,调用nopage方法得到该用户空间所在页对应的物理页面,具体为:
1,将要访问的虚拟地址,减去上述用户空间的起始虚拟地址,得到偏移地址,然后根据该偏移地址计算出要访问的物理地址;通常情况下,这个偏移地址就等于物理地址。
2,将物理地址右移PAGE_SHIFT位,转换成页帧号,然后调用pfn_to_page函数返回page结构指针。
3,操作系统取得page结构指针后,为上述物理地址设置页目录和页表项。
上述nopage方法通过代码实现如下:
综上所述,本发明提供的方法,克服了为网卡分配固定缓存区存在的缓冲区不足的问题,提高了系统在高峰时的处理能力;解决了常规零拷贝过程中报文不能被任意修改或移动的问题;并且本发明所述方法不需要修改现有的网卡驱动,改造成本为零。
如图4所示,本发明还提供一种零拷贝接收报文的系统,包括:
初始化模块,用于打开预先创建的虚拟字符设备,调用所述虚拟字符设备提供的mmap方法;
映射模块,用于在所述mmap方法被调用时,将所有内核低端空间映射到用户空间,并为所述内核低端空间的结构vm_area_struct设置nopage方法;
地址计算模块,用于在网卡设备接收到数据包时,基于所述数据包在所述内核低端空间中的地址,得到数据包存储偏移地址后传递给地址访问模块;
地址访问模块,用于根据所述偏移地址计算得到待访问的虚拟地址,并在访问所述虚拟地址时,触发CPU缺页异常;
Page获取模块,用于在所述地址访问模块触发CPU缺页异常时,调用所述nopage方法得到要访问的物理地址对应的页目录和页表项;
报文读取模块,用于基于所述物理地址对应的页目录和页表项,读取存储在所述内核低端空间内的所述数据包。
进一步地,上述Page获取模块,具体包括:
物理地址计算子模块,用于将要访问的所述虚拟地址减去所述用户空间的起始虚拟地址,得到一个偏移地址,并根据该偏移地址计算要访问的物理地址;
Page指针获取子模块,用于将所述物理地址右移PAGE_SHIFT位转换成页帧号,再调用pfn_to_page函数返回page结构指针;
Page项设置子模块,用于在所述Page指针获取模块取得所述page结构指针后,为所述物理地址设置页目录和页表项。
进一步地,上述地址计算模块,具体用于将所述数据包的存储偏移地址加上映射的用户空间地址,得到读取所述数据包所需访问的虚拟地址。
进一步地,本发明所述系统中,所述网卡设备具体包括:
数据包接收模块,用于接收到所述数据包时,调用系统函数alloc_skb()为网卡分配缓存,并利用所述系统函数alloc_skb()调用内存分配函数kmalloc()分配内存块;
数据包存储模块,用于通过直接内存存取方式将所述数据包存到所述缓存中。
综上所述,本发明提供的系统,克服了为网卡分配固定缓存区存在的缓冲区不足的问题,提高了系统在高峰时的处理能力;解决了常规零拷贝过程中报文不能被任意修改或移动的问题;并且本发明所述系统不需要修改现有的网卡驱动,改造成本为零。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (3)

1.一种零拷贝接收报文的方法,其特征在于,包括:
用户态进程打开预先创建的虚拟字符设备,调用所述虚拟字符设备提供的mmap方法;内核态进程在所述mmap方法被调用时,将所有内核低端空间映射到用户空间,并为所述内核低端空间的结构vm_area_struct设置nopage方法;
内核态进程在网卡设备接收到数据包时,基于所述数据包在所述内核低端空间中的地址,得到数据包存储偏移地址后传递给用户态进程;
用户态进程根据所述偏移地址计算得到待访问的虚拟地址,并在访问所述虚拟地址时,触发CPU缺页异常,使得操作系统调用所述nopage方法得到要访问的物理地址对应的页目录和页表项;
用户态进程基于所述页目录和页表项,读取存储在所述内核低端空间内的所述数据包;
所述用户态进程根据所述偏移地址计算得到待访问的虚拟地址的方式包括:
所述用户态进程将所述数据包的存储偏移地址加上映射的用户空间地址,得到读取所述数据包所需访问的虚拟地址;
所述操作系统调用所述nopage方法得到要访问的物理地址对应的页目录和页表项,具体包括:
操作系统将要访问的所述虚拟地址减去所述用户空间的起始虚拟地址,得到一个偏移地址,并根据该偏移地址得到要访问的物理地址;
操作系统将所述物理地址右移PAGE_SHIFT位转换成页帧号,再调用pfn_to_page函数返回page结构指针;
操作系统取得所述page结构指针后,为所述物理地址设置页目录和页表项;
所述操作系统调用所述nopage方法得到要访问的物理地址对应的页目录和页表项前,还包括:
所述操作系统调用缺页异常处理函数检测所述虚拟地址所在用户空间的合法性,当所述用户空间合法时,调用所述nopage方法;
所述网卡设备接收到所述数据包时,具体包括:
所述网卡的驱动调用系统函数alloc_skb()为网卡分配缓存,并利用所述系统函数alloc_skb()调用内存分配函数kmalloc()分配内存块;
所述网卡的驱动通过直接内存存取方式将所述数据包存到所述缓存中。
2.如权利要求1所述的方法,其特征在于,所述网卡的驱动将所述数据包存到所述缓存后还包括:操作系统的TCP/IP协议栈对所述数据包进行处理。
3.一种零拷贝接收报文的系统,其特征在于,包括:初始化模块、映射模块、地址计算模块、地址访问模块、Page获取模块、报文读取模块和网卡设备;
初始化模块,用于打开预先创建的虚拟字符设备,调用所述虚拟字符设备提供的mmap方法;
映射模块,用于在所述mmap方法被调用时,将所有内核低端空间映射到用户空间,并为所述内核低端空间的结构vm_area_struct设置nopage方法;
地址计算模块,用于在网卡设备接收到数据包时,基于所述数据包在所述内核低端空间中的地址,得到数据包存储偏移地址后传递给地址访问模块;
地址访问模块,用于根据所述偏移地址计算得到待访问的虚拟地址,并在访问所述虚拟地址时,触发CPU缺页异常;
Page获取模块,用于在所述地址访问模块触发CPU缺页异常时,调用所述nopage方法得到要访问的物理地址对应的页目录和页表项;
报文读取模块,用于基于所述物理地址对应的页目录和页表项,读取存储在所述内核低端空间内的所述数据包;
所述Page获取模块具体包括:
物理地址计算子模块,用于将要访问的所述虚拟地址减去所述用户空间的起始虚拟地址,得到一个偏移地址,并根据该偏移地址计算要访问的物理地址;
Page指针获取子模块,用于将所述物理地址右移PAGE_SHIFT位转换成页帧号,再调用pfn_to_page函数返回page结构指针;
Page项设置子模块,用于在所述Page指针获取模块取得所述page结构指针后,为所述物理地址设置页目录和页表项;
所述地址计算模块具体用于,将所述数据包的存储偏移地址加上映射的用户空间地址,得到读取所述数据包所需访问的虚拟地址;
所述网卡设备具体包括:
数据包接收模块,用于接收到所述数据包时,调用系统函数alloc_skb()为网卡分配缓存,并利用所述系统函数alloc_skb()调用内存分配函数kmalloc()分配内存块;
数据包存储模块,用于通过直接内存存取方式将所述数据包存到所述缓存中。
CN201110361904.3A 2011-11-15 2011-11-15 一种零拷贝接收报文的方法和系统 Active CN102402487B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110361904.3A CN102402487B (zh) 2011-11-15 2011-11-15 一种零拷贝接收报文的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110361904.3A CN102402487B (zh) 2011-11-15 2011-11-15 一种零拷贝接收报文的方法和系统

Publications (2)

Publication Number Publication Date
CN102402487A CN102402487A (zh) 2012-04-04
CN102402487B true CN102402487B (zh) 2014-10-22

Family

ID=45884711

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110361904.3A Active CN102402487B (zh) 2011-11-15 2011-11-15 一种零拷贝接收报文的方法和系统

Country Status (1)

Country Link
CN (1) CN102402487B (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102929722A (zh) * 2012-10-18 2013-02-13 曙光信息产业(北京)有限公司 一种基于大页面万兆网卡的收包及其系统
CN102999330B (zh) * 2012-11-12 2015-10-14 北京神州绿盟信息安全科技股份有限公司 基于用户态网卡驱动的网卡配置方法及装置
CN104111891B (zh) * 2013-04-19 2017-05-24 珠海扬智电子科技有限公司 电子装置及其数据存取方法
CN103530241B (zh) * 2013-09-24 2016-04-13 创新科存储技术(深圳)有限公司 一种用户态的双控内存镜像实现方法
CN103544324B (zh) * 2013-11-11 2017-09-08 北京搜狐新媒体信息技术有限公司 一种内核态的数据访问方法、装置及系统
CN104732164A (zh) * 2013-12-18 2015-06-24 国家计算机网络与信息安全管理中心 一种提高ssl数据处理速度的装置及其方法
CN103942149B (zh) * 2014-03-27 2017-11-03 汉柏科技有限公司 用户态程序与内核交互报文的方法及系统
CN104050101B (zh) * 2014-05-29 2018-02-13 汉柏科技有限公司 一种实现arm cpu用户态收发报文的方法
CN104090750A (zh) * 2014-06-05 2014-10-08 汉柏科技有限公司 一种用户态获取受限访问信息的方法及装置
CN105677597A (zh) * 2014-11-20 2016-06-15 中兴通讯股份有限公司 数据写入方法及装置
CN105868028B (zh) * 2015-01-23 2021-05-18 深圳市链科网络科技有限公司 一种进程间共享数据的方法、装置及终端
EP3451197B1 (en) * 2015-05-13 2021-08-25 Huawei Technologies Co., Ltd. System and method for creating selective snapshots of a database
CN105677493A (zh) * 2016-01-04 2016-06-15 汉柏科技有限公司 用户态和内核间的通信方法及系统
US10380012B2 (en) * 2016-04-22 2019-08-13 Samsung Electronics Co., Ltd. Buffer mapping scheme involving pre-allocation of memory
CN107733837A (zh) * 2016-08-11 2018-02-23 杭州迪普科技股份有限公司 基于应用层网络异常报文的异常检测方法及装置
CN107302499B (zh) * 2017-06-26 2020-12-18 北京赛特斯信息科技股份有限公司 无需拷贝报文缓存的nfv协议报文收发方法
CN107908365A (zh) * 2017-11-14 2018-04-13 郑州云海信息技术有限公司 用户态存储系统数据交互的方法、装置及设备
CN108062253A (zh) * 2017-12-11 2018-05-22 北京奇虎科技有限公司 一种内核态与用户态的通信方法、装置及终端
CN108650295A (zh) * 2018-03-30 2018-10-12 深圳市风云实业有限公司 协议报文跨层通信方法装置及电子设备
CN111294293B (zh) * 2018-12-07 2021-08-10 网宿科技股份有限公司 一种基于用户态协议栈的网络隔离方法和装置
CN111181736B (zh) * 2019-12-31 2022-04-05 奇安信科技集团股份有限公司 数据传输方法、装置、系统及介质
CN111371759B (zh) * 2020-02-25 2022-06-21 深信服科技股份有限公司 网络数据包读取方法、装置、设备及可读存储介质
CN114244917B (zh) * 2020-08-31 2023-06-02 华为技术有限公司 一种数据传输方法、装置及系统
CN112532585A (zh) * 2020-11-02 2021-03-19 杭州迪普科技股份有限公司 一种进程间报文传输的方法、设备及介质
CN113098955B (zh) * 2021-03-30 2022-12-02 山东英信计算机技术有限公司 一种数据传输方法、装置、设备及计算机可读存储介质
CN115599510A (zh) * 2021-07-08 2023-01-13 华为技术有限公司(Cn) 一种缺页异常的处理方法及相应装置
CN114124680B (zh) * 2021-09-24 2023-11-17 绿盟科技集团股份有限公司 一种文件访问控制告警日志管理方法及装置
CN115103036A (zh) * 2022-05-20 2022-09-23 中国科学院计算技术研究所 一种高效的tcp/ip数据报处理方法及系统
CN116455612B (zh) * 2023-03-23 2023-11-28 京信数据科技有限公司 一种隐私计算中间数据流零拷贝装置及方法
CN118200417A (zh) * 2024-03-12 2024-06-14 江苏新质信息科技有限公司 基于netmap的fpga算法卡调用处理方法及系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
刘青昆等.一种并行计算通信优化策略.《辽宁工程技术大学学报(自然科学版)》.2011,第30卷(第2期), *
并行系统零拷贝通信优化技术的研究;王佳;《中国优秀硕士学位论文全文数据库》;20110104;13-27页 *
王佳.并行系统零拷贝通信优化技术的研究.《中国优秀硕士学位论文全文数据库》.2011,

Also Published As

Publication number Publication date
CN102402487A (zh) 2012-04-04

Similar Documents

Publication Publication Date Title
CN102402487B (zh) 一种零拷贝接收报文的方法和系统
Peter et al. Arrakis: The operating system is the control plane
Li et al. Socksdirect: Datacenter sockets can be fast and compatible
EP2215783B1 (en) Virtualised receive side scaling
US8392565B2 (en) Network memory pools for packet destinations and virtual machines
Rizzo netmap: a novel framework for fast packet I/O
Honda et al. mSwitch: a highly-scalable, modular software switch
US8005022B2 (en) Host operating system bypass for packets destined for a virtual machine
CN101150488B (zh) 一种零拷贝网络报文接收方法
García-Dorado et al. High-performance network traffic processing systems using commodity hardware
US11588734B2 (en) Systems for providing an LPM implementation for a programmable data plane through a distributed algorithm
CN101540720B (zh) 一种支持多类型网卡链路聚合的零拷贝方法
EP2871580A1 (en) Programmed input/output mode
US11689648B2 (en) Network interface device
CN109561105A (zh) 一种基于报文零拷贝方式的高性能报文捕获发送平台
CN111181850B (zh) 数据包泛洪抑制方法、装置和设备及计算机存储介质
CN103441941A (zh) 一种基于Linux的高性能数据报文捕获方法和装置
CN111431757A (zh) 虚拟网络的流量采集方法及装置
CN108090003A (zh) 一种基于零拷贝的提升web服务器性能的方法、系统
WO2014004192A1 (en) Performing emulated message signaled interrupt handling
Enberg et al. I/O is faster than the CPU: Let's partition resources and eliminate (most) OS abstractions
Eran et al. Flexdriver: A network driver for your accelerator
Jang et al. A low-overhead networking mechanism for virtualized high-performance computing systems
CN104050101A (zh) 一种实现arm cpu用户态收发报文的方法
US20220166718A1 (en) Systems and methods to prevent packet reordering when establishing a flow entry

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
CB02 Change of applicant information

Address after: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Applicant after: BEIJING TOPSEC TECHNOLOGY CO., LTD.

Address before: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Applicant before: Beijing heaven melts letter Science Technologies Co., Ltd.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: BEIJING HEAVEN MELTS LETTER SCIENCE TECHNOLOGIES CO., LTD. TO: BEIJING TOPSEC TECHNOLOGY CO., LTD.

C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: BEIJING HEAVEN MELTS LETTER SCIENCE TECHNOLOGIES C

Free format text: FORMER NAME: BEIJING TOPSEC TECHNOLOGY CO., LTD.

CP01 Change in the name or title of a patent holder

Address after: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Patentee after: Beijing heaven melts letter Science Technologies Co., Ltd.

Address before: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Patentee before: BEIJING TOPSEC TECHNOLOGY CO., LTD.

C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Patentee after: BEIJING TOPSEC TECHNOLOGY CO., LTD.

Address before: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Patentee before: Beijing heaven melts letter Science Technologies Co., Ltd.

C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Patentee after: Beijing heaven melts letter Science Technologies Co., Ltd.

Address before: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Patentee before: BEIJING TOPSEC TECHNOLOGY CO., LTD.