CN109766187A - 网络数据包高速处理转发方法及系统 - Google Patents
网络数据包高速处理转发方法及系统 Download PDFInfo
- Publication number
- CN109766187A CN109766187A CN201910024105.3A CN201910024105A CN109766187A CN 109766187 A CN109766187 A CN 109766187A CN 201910024105 A CN201910024105 A CN 201910024105A CN 109766187 A CN109766187 A CN 109766187A
- Authority
- CN
- China
- Prior art keywords
- user space
- kernel state
- memory pool
- desc
- module
- 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.)
- Pending
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种网络数据包高速处理转发方法及系统,涉及数据通信领域。该方法包括以下步骤:用户态进程在内存池中处理收发的网络数据包,内核态进程将内存池中的接收描述符环和发送描述符环映射到同一个内存缓冲区,使发送和接收数据包缓存共用一个内存缓冲区。本发明能减少网络数据包在本地处理中的拷贝次数,减少系统调用,提高CPU性能,提高网络数据包的处理与转发速率。
Description
技术领域
本发明涉及数据通信领域,具体是涉及一种网络数据包高速处理转发方法及系统。
背景技术
路由器平台转发面目前使用的是af_packet处理数据包,数据包从网卡接收到后,由网卡驱动捕捉收包中断,经内核协议栈后送给用户态进程处理;处理完将数据包交给协议栈,最终由网卡发送出去。数据包在整个过程中经过了多次拷贝,包括从网卡到内核的拷贝,以及从内核到用户空间的拷贝等等,且涉及大量系统调用,包括send和recv等等,占用CPU资源和内存资源,转发性能较低。
当前比较常用的ZCP(Zero CoPy,零拷贝)技术,只局限于收包阶段和发包阶段分别实现了零拷贝,但是无可避免地,还是要将收到的数据包从收包缓冲区拷贝到发包缓冲区。数据缓冲区是用户前端用来存储、操纵数据的对象。
在实现本发明的过程中,发明人发现现有技术中至少存在如下问题:路由器平台转发面占用大量CPU和内存资源,转发速率较低。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种网络数据包高速处理转发方法及系统,能够减少网络数据包在本地处理中的拷贝次数,减少系统调用,提高CPU性能,进而提高网络数据包的处理与转发速率。
第一方面,提供一种网络数据包高速处理转发方法,包括以下步骤:
用户态进程在内存池中处理收发的网络数据包,内核态进程将内存池中的接收描述符环和发送描述符环映射到同一个内存缓冲区,使发送和接收数据包缓存共用一个内存缓冲区。
根据第一方面,在第一方面的第一种可能的实现方式中,用户态进程在内存池中处理收发的网络数据包之前,还包括以下步骤:
内核态进程创建内存池,并对内存池进行DMA映射,供网卡直接使用;用户态进程通过mmap方法将内核态进程创建的内存池映射到用户态内存。
根据第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,内核态进程创建内存池之前,还包括以下步骤:
内核态进程创建虚拟字符设备,用户态进程调用虚拟字符设备,实现用户态进程与内核态进程之间的通信。
根据第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述内存池包括用于保存包内容的数据包缓冲区pkt_buff和用于保存接收描述符环和发送描述符环的描述符desc,内核态进程建立pkt_buff与desc之间的对应关系。
根据第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,该方法还包括以下步骤:
处理网卡中断时,内核态进程将收到的数据包存入pkt_buff,并修改desc中的状态字,通知用户态进程处理数据包;
用户态进程处理完数据包后,更新desc中的状态字;
内核态进程根据desc中的状态字,修改网卡的发送描述符环状态,网卡根据该状态发送对应数据包。
第二方面,提供一种网络数据包高速处理转发系统,包括:
内核态模块,用于:创建内存池;将内存池中的接收描述符环和发送描述符环映射到同一个内存缓冲区,使发送和接收数据包缓存共用一个内存缓冲区;
用户态模块,用于:在内存池中处理收发的网络数据包。
根据第二方面,在第二方面的第一种可能的实现方式中,所述内核态模块还用于:对内存池进行DMA映射,供网卡直接使用;
所述用户态模块还用于:通过mmap方法将内核态模块创建的内存池映射到用户态内存。
根据第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述内核态模块还用于:创建虚拟字符设备;
所述用户态模块,还用于:调用虚拟字符设备,实现用户态进程与内核态进程之间的通信。
根据第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述内核态模块创建的内存池包括用于保存包内容的数据包缓冲区pkt_buff和用于保存接收描述符环和发送描述符环的描述符desc,内核态模块建立pkt_buff与desc之间的对应关系。
根据第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述内核态模块还用于:处理网卡中断时,将收到的数据包存入pkt_buff,并修改desc中的状态字,通知用户态模块处理数据包;
用户态模块处理完数据包后,更新desc中的状态字;
所述内核态模块根据desc中的状态字,修改网卡的发送描述符环状态,网卡根据该状态发送对应数据包。
与现有技术相比,本发明的优点如下:
(1)本发明将内存池中的接收描述符环和发送描述符环映射到同一个内存缓冲区,使发送和接收数据包缓存共用一个内存缓冲区。在传统的零拷贝的基础上,发送和接收数据包缓存共用一个内存缓冲区,无需将数据包从接收缓冲区拷贝发送缓冲区,减少了数据包从收到发,从网卡经内核态再到用户态之间的多次拷贝,能够减少网络数据包在本地处理中的拷贝次数,减少系统调用,提高CPU性能,进而提高网络数据包的处理与转发速率。
(2)本发明接管了网卡软中断,绕过了内核协议栈,减少了包处理的流程,使系统转发性能大幅度提升。
附图说明
图1是本发明实施例中HFS系统的创建和执行流程图。
图2是本发明实施例中HFS系统的内存映射示意图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
实施例1
本发明实施例提供一种网络数据包高速处理转发方法,包括以下步骤:
创建虚拟字符设备,实现用户态进程与内核态进程之间的通信;
内核态进程创建mempool(内存池),并对内存池进行DMA(Direct Memory Access,直接内存存取)映射,供网卡直接使用;
用户态进程在内存池中处理收发的网络数据包,将内存池中的接收描述符环和发送描述符环映射到同一个内存缓冲区,使发送和接收数据包缓存共用一个内存缓冲区,无需将数据包从接收缓冲区拷贝发送缓冲区,在传统的零拷贝的基础上,进一步减少从接收缓冲区到发送缓冲区的拷贝,从而提高转发性能。
作为优选的实施方式,用户态进程通过mmap方法将内核态进程创建的内存池映射到用户态内存。
作为优选的实施方式,创建虚拟字符设备,实现用户态进程与内核态进程之间的通信,包括以下步骤:
内核态进程创建/dev/hfs虚拟字符设备,用户态进程采用open方法:fd=open("/dev/hfs"),调用虚拟字符设备,实现用户态进程与内核态进程之间的通信。
比现有的用户态进程与内核态进程之间通过系统调用进行通信要快得多,且省去了网卡到内核、内核到用户态的多次拷贝。
本发明实施例在传统的零拷贝的基础上,发送和接收数据包缓存共用一个内存缓冲区,无需将数据包从接收缓冲区拷贝发送缓冲区,减少了数据包从收到发、从网卡经内核态再到用户态之间的多次拷贝,能够减少网络数据包在本地处理中的拷贝次数,减少系统调用,提高CPU性能,进而提高网络数据包的处理与转发速率。
作为优选的实施方式,内核态进程对内存池进行DMA映射,供网卡直接使用,具体过程为:
内核态进程在内存池中为收发数据建立一个DMA环形缓冲区,并将这个缓冲区通过DMA映射,让网卡可以直接访问内存池缓冲区。
用于DMA的内存物理地址可以是连续的,也可以是不连续的。
作为优选的实施方式,内存池包括用于保存包内容的数据包缓冲区pkt_buff和用于保存接收描述符环和发送描述符环的描述符desc,内核态进程建立pkt_buff与desc之间的对应关系。
处理网卡中断时,内核态进程将收到的数据包存入pkt_buff,并修改desc中的状态字,通知用户态进程处理数据包;
用户态进程处理完数据包后,更新desc中的状态字;
内核态进程根据desc中的状态字,修改网卡的发送描述符环状态,网卡根据该状态发送对应数据包。
本发明实施例接管了网卡软中断,绕过了内核协议栈,减少了包处理的流程,使系统转发性能大幅度提升。
实施例2
本发明实施例提供一种网络数据包高速处理转发系统,包括内核态模块和用户态模块,其中:
内核态模块,用于:创建内存池;将内存池中的接收描述符环和发送描述符环映射到同一个内存缓冲区,使发送和接收数据包缓存共用一个内存缓冲区;
用户态模块,用于:通过mmap方法将内核态模块创建的内存池映射到用户态内存,在内存池中处理收发的网络数据包。
进一步,内核态模块还用于:对内存池进行DMA映射,供网卡直接使用,具体过程为:
内核态模块在内存池中为收发数据建立一个DMA环形缓冲区,并将这个缓冲区通过DMA映射,让网卡可以直接访问内存池缓冲区。
用于DMA的内存物理地址可以是连续的,也可以是不连续的。
进一步,内核态模块还用于:创建虚拟字符设备。
用户态模块还用于:调用虚拟字符设备,实现用户态进程与内核态进程之间的通信。
比现有的用户态进程与内核态进程之间通过系统调用进行通信要快得多,且省去了网卡到内核、内核到用户态的多次拷贝。
本发明实施例在传统的零拷贝的基础上,发送和接收数据包缓存共用一个内存缓冲区,无需将数据包从接收缓冲区拷贝发送缓冲区,减少了数据包从收到发、从网卡经内核态再到用户态之间的多次拷贝,能够减少网络数据包在本地处理中的拷贝次数,减少系统调用,提高CPU性能,进而提高网络数据包的处理与转发速率。
作为优选的实施方式,内存池包括用于保存包内容的数据包缓冲区pkt_buff和用于保存接收描述符环和发送描述符环的描述符desc,内核态模块还用于:建立pkt_buff与desc之间的对应关系。
进一步,内核态模块还用于:处理网卡中断时,将收到的数据包存入pkt_buff,并修改desc中的状态字,通知用户态模块处理数据包;
用户态模块处理完数据包后,更新desc中的状态字;
内核态模块根据desc中的状态字,修改网卡的发送描述符环状态,网卡根据该状态发送对应数据包。
本发明实施例接管了网卡软中断,绕过了内核协议栈,减少了包处理的流程,使系统转发性能大幅度提升。
实施例3
本发明实施例提供一种网络数据包高速处理转发系统,包括内核态模块和用户态模块,内核态模块包括操作系统部分和网卡驱动部分,其中:
内核态模块的操作系统部分用于:创建内存池,将内存池中的接收描述符环和发送描述符环映射到同一个内存缓冲区,使发送和接收数据包缓存共用一个内存缓冲区;以及创建虚拟字符设备;
用户态模块,用于:调用虚拟字符设备,实现用户态进程与内核态进程之间的通信;通过mmap方法将内核态模块创建的内存池映射到用户态内存,在内存池中处理收发的网络数据包。
进一步,内核态模块的操作系统部分还用于:对内存池进行DMA映射,供网卡直接使用,具体过程为:
内核态模块在内存池中为收发数据建立一个DMA环形缓冲区,并将这个缓冲区通过DMA映射,让网卡可以直接访问内存池缓冲区。
用于DMA的内存物理地址可以是连续的,也可以是不连续的。
内核态模块的网卡驱动部分,用于:
网卡初始化时,将网卡的发送描述符环和接收描述符环中的DMA地址指向内存池映射的缓冲区中的DMA物理地址;
接管网卡收包中断,将数据包交由内核态模块的操作系统部分处理;
将内核态模块的操作系统部分处理完的数据包发送出去,并回收内存池映射的缓冲区。
本发明实施例在传统的零拷贝的基础上,发送和接收数据包缓存共用一个内存缓冲区,无需将数据包从接收缓冲区拷贝发送缓冲区,减少了数据包从收到发、从网卡经内核态再到用户态之间的多次拷贝,能够减少网络数据包在本地处理中的拷贝次数,减少系统调用,提高CPU性能,进而提高网络数据包的处理与转发速率。
作为优选的实施方式,内核态模块的操作系统部分对内存池进行DMA映射的内存物理地址可以连续,也可以不连续。
作为优选的实施方式,内核态模块的操作系统部分创建的内存池包括用于保存包内容的数据包缓冲区pkt_buff和用于保存接收描述符环和发送描述符环的描述符desc,并建立pkt_buff与desc之间的对应关系。
内核态模块的操作系统部分还用于:处理网卡中断时,将收到的数据包存入pkt_buff,并修改desc中的状态字,通知用户态模块处理数据包;
用户态模块处理完数据包后,更新desc中的状态字;
内核态模块的操作系统部分根据desc中的状态字,修改网卡的发送描述符环状态,网卡根据该状态发送对应数据包;
内核态模块的网卡驱动部分,用于:
网卡初始化时,将网卡的发送描述符环和接收描述符环中的DMA地址指向内存池中对应pkt_buff的DMA物理地址;
接管网卡收包中断,将数据包交由内核态模块的操作系统部分处理;
将内核态模块的操作系统部分处理完的数据包发送出去,并回收pkt_buff。
本发明实施例接管了网卡软中断,绕过了内核协议栈,减少了包处理的流程,使系统转发性能大幅度提升。
实施例4
本发明实施例提供一种网络数据包高速处理转发系统,下面称为HFS(HighspeedForwarding System,高速转发系统)系统,HFS系统包括内核态模块和用户态模块。
参见图1所示,HFS系统的创建和执行流程说明如下:
A1阶段,内核加载HFS系统,HFS系统初始化,创建HFS虚拟字符设备。
A2阶段,用户态模块打开HFS虚拟字符设备。内核态模块根据单板实际内存大小,创建合适大小的mempool(内存池),mempool包括三个部分:数据包接收描述符环rx_ring,数据包发送描述符环tx_ring,以及数据包缓冲区部分(以下简称pkt_buff)。
rx_ring和tx_ring包含同样多个描述符(以下简称desc),每个desc指向一个pkt_buff。
pkt_buff分配的时候是内核虚拟地址,DMA后得到物理地址,将对应的物理地址存入对应的desc中。
整个mempool都会通过mmap映射到用户态内存。这样,用户态模块通过mmap与内核态模块建立了连接,内核态模块跟网卡之间通过DMA连接。所以,整个mempool内存空间对于网卡、内核态模块和用户态模块可以说都是透明的。
mmap是一种内存映射文件的方法,mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。mmap操作提供了一种机制,让用户程序直接访问设备内存,这种机制,相比较在用户空间和内核空间互相拷贝数据,效率更高。在要求高性能的应用中比较常用。
这里要说明的是,mempool在内核分配地址的时候,内存地址可以是不连续的,也就是说DMA后的物理地址可以是不连续的,相比有些系统要求必须连续的物理地址空间,HFS系统就显得容易实现得多了,否则可能因为找不到大块连续的物理内存而无法使系统生效。
mempool中的每个元素,包括desc和pkt_buff在分配时都有一个基地址baseaddr、索引index和数据长度len。用户态模块与内核态模块之间的映射正是通过这三个数据来完成的。
以太网数据包的MTU(Maximum Transmission Unit,最大传输单元)是1500字节,可以为每个pkt_buff分配2k大小的内存。这样每个pkt_buff可以保存一个完整的数据包,并且每两个pkt_buff占用一个page,linux操作系统的每个页page大小为4k。
mempool的内存分配,是在初始化时一次完成的。后续收发包过程,不需要重新分配或者释放内存,直到销毁HFS虚拟字符设备。
A3阶段,网卡收到包后,会触发软中断。HFS系统接管了这个软中断。Nic_rx_ring是网卡的接收描述符环,Nic_tx_ring是网卡的发送描述符环,环中的描述符数量与mempool中的描述符数量相等,且一一对应。
HFS系统的内核态模块会在收发包时处理Nic_rx_ring和rx_ring,以及Nic_rx_ring和rx_ring之间的对应关系。
在mempool初始化时,对应的pkt_buff的物理地址,相应地填充到了Nic_tx_ring和Nic_rx_ring中。网卡收到的数据包,会通过DMA直接存到对应的pkt_buff中。
A4阶段,用户态模块处理完报文后,将报文转交给内核态模块,最终由网卡发送出去。
本发明实施例接管了网卡软中断,绕过了内核协议栈,减少了包处理的流程,使系统转发性能大幅度提升。
实施例5
作为优选的实施方式,在实施例4的基础上,A3阶段,从软中断开始,具体的处理过程是这样的:
首先关闭中断,处理数据包时不再响应中断。
之后,通过轮询的方式读取Nic_rx_ring,判断是否有新数据包,如果在一定时间内都没有数据包进入网卡,则重新打开中断。
这种中断加轮询的方式,称之为NAPI(New Application ProgrammingInterface,新应用编程接口)方式。
HFS系统的内核态模块接收到数据包后,会将rx_ring中的desc与Nic_rx_ring中的数据同步,并将数据包交给HFS系统的用户态模块。
HFS系统的用户态模块查看desc的标记,了解到本次中断收到多少个数据包,并依次对数据包进行处理。如果是要转发的数据包,则将这个desc标记为待发送,并转交发送模块处理;如果数据包不需要转发,则将这个desc标记为已处理。
HFS系统的用户态模块处理完后,通过ioctl系统调用通知HFS系统的内核态模块处理,ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。如果是已处理的数据包,表示这个desc和对应的pkt_buff可以重新用来接收数据包;如果desc的标记是待发送,则通知Nic_tx_ring,将数据包发送出去,发送完后,再将本desc标记为已处理。在这个过程中,HFS系统的内核态模块总是保持rx_ring与Nic_rx_ring同步,以及tx_ring与Nic_tx_ring同步。
也就是说,网卡收到数据包后,将数据包的具体内容填入pkt_buff缓冲区,对应的desc配置标志位已接收。交由用户态模块处理后,desc标记为已处理或者待发送,已处理的desc直接被内核回收,作为缓冲区,可以重新接收数据包;待发送的desc则在网卡将数据包发送出去后,切换状态为已处理,最终被内核回收,作为重新接收数据包使用。
本发明实施例接管了网卡软中断,绕过了内核协议栈,减少了包处理的流程,使系统转发性能大幅度提升。
实施例6
作为优选的实施方式,在实施例4或5的基础上,HFS系统的用户态模块具体用于:
在初始化时,打开dev/hfs虚拟字符设备,并调用ioctl系统,调用注册HFS虚拟网络接口。系统调用后,内核态模块返回一个内存池的大小。用户态模块调用mmap将用户态内存与内核态内存进行映射,这块映射的内存池供后续收发包使用。
收包时,从desc中对应的pkt_buff取出数据包处理,如果是转发数据包,则修改数据包头后,修改desc中对应数据包的发送标志,并调用ioctl系统通知内核态模块继续处理,内核态模块根据标志判该断pkt_buff是否需要发送。
本发明实施例在传统的零拷贝的基础上,发送和接收数据包缓存共用一个内存缓冲区,无需将数据包从接收缓冲区拷贝发送缓冲区,减少了数据包从收到发、从网卡经内核态再到用户态之间的多次拷贝,能够减少网络数据包在本地处理中的拷贝次数,减少系统调用,提高CPU性能,进而提高网络数据包的处理与转发速率。
作为优选的实施方式,HFS系统的内核态模块进一步包括操作系统部分和网卡驱动部分。
作为优选的实施方式,内核态模块的操作系统部分具体用于:
加载HFS内核模块时,创建dev/hfs虚拟字符设备;
初始化mempool内存池,内存池包括用于保存包内容的pkt_buff包缓冲区部分和用于保存收包和发包ring的desc描述符部分;内核态模块的操作系统部分建立pkt_buff与desc之间的对应关系;
内核态模块的操作系统部分将内存池大小通过系统调用传给用户态模块,用户态模块通过mmap方法将内核态模块创建的内存池映射到用户态内存,建立用户态内存和内核态内存的映射关系;
处理网卡中断时,内核态模块的操作系统部分将收到的数据包存入pkt_buff缓冲区,并修改desc描述符中的状态字,通知用户态模块处理数据包;
用户态模块处理完数据包后,更新desc状态字;
内核态模块的操作系统部分根据desc状态字,修改网卡Nic_tx_ring描述符状态;
网卡根据该状态发送对应数据包。
作为优选的实施方式,内核态模块的网卡驱动部分具体用于:
网卡初始化时,将网卡驱动部分Nic_rx_ring和Nic_tx_ring中的描述符中的dma_addr指向上述mempool中对应pkt_buff的DMA物理地址;
接管网卡收包中断,将数据包交由HFS操作系统部分部分处理;
将内核态模块的操作系统部分处理完的数据包发送出去,并回收pkt_buff。
本发明实施例接管了网卡软中断,绕过了内核协议栈,减少了包处理的流程,使系统转发性能大幅度提升。
本领域的技术人员可以对本发明实施例进行各种修改和变型,倘若这些修改和变型在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。
说明书中未详细描述的内容为本领域技术人员公知的现有技术。
Claims (10)
1.一种网络数据包高速处理转发方法,其特征在于,包括以下步骤:
用户态进程在内存池中处理收发的网络数据包,内核态进程将内存池中的接收描述符环和发送描述符环映射到同一个内存缓冲区,使发送和接收数据包缓存共用一个内存缓冲区。
2.如权利要求1所述的网络数据包高速处理转发方法,其特征在于:用户态进程在内存池中处理收发的网络数据包之前,还包括以下步骤:
内核态进程创建内存池,并对内存池进行DMA映射,供网卡直接使用;用户态进程通过mmap方法将内核态进程创建的内存池映射到用户态内存。
3.如权利要求2所述的网络数据包高速处理转发方法,其特征在于:内核态进程创建内存池之前,还包括以下步骤:
内核态进程创建虚拟字符设备,用户态进程调用虚拟字符设备,实现用户态进程与内核态进程之间的通信。
4.如权利要求2所述的网络数据包高速处理转发方法,其特征在于:所述内存池包括用于保存包内容的数据包缓冲区pkt_buff和用于保存接收描述符环和发送描述符环的描述符desc,内核态进程建立pkt_buff与desc之间的对应关系。
5.如权利要求4所述的网络数据包高速处理转发方法,其特征在于:该方法还包括以下步骤:
处理网卡中断时,内核态进程将收到的数据包存入pkt_buff,并修改desc中的状态字,通知用户态进程处理数据包;
用户态进程处理完数据包后,更新desc中的状态字;
内核态进程根据desc中的状态字,修改网卡的发送描述符环状态,网卡根据该状态发送对应数据包。
6.一种网络数据包高速处理转发系统,其特征在于,包括:
内核态模块,用于:创建内存池;将内存池中的接收描述符环和发送描述符环映射到同一个内存缓冲区,使发送和接收数据包缓存共用一个内存缓冲区;
用户态模块,用于:在内存池中处理收发的网络数据包。
7.如权利要求6所述的网络数据包高速处理转发系统,其特征在于:所述内核态模块还用于:对内存池进行DMA映射,供网卡直接使用;
所述用户态模块还用于:通过mmap方法将内核态模块创建的内存池映射到用户态内存。
8.如权利要求7所述的网络数据包高速处理转发系统,其特征在于:所述内核态模块还用于:创建虚拟字符设备;
所述用户态模块,还用于:调用虚拟字符设备,实现用户态进程与内核态进程之间的通信。
9.如权利要求7所述的网络数据包高速处理转发系统,其特征在于:所述内核态模块创建的内存池包括用于保存包内容的数据包缓冲区pkt_buff和用于保存接收描述符环和发送描述符环的描述符desc,内核态模块建立pkt_buff与desc之间的对应关系。
10.如权利要求9所述的网络数据包高速处理转发系统,其特征在于:所述内核态模块还用于:处理网卡中断时,将收到的数据包存入pkt_buff,并修改desc中的状态字,通知用户态模块处理数据包;
用户态模块处理完数据包后,更新desc中的状态字;
所述内核态模块根据desc中的状态字,修改网卡的发送描述符环状态,网卡根据该状态发送对应数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910024105.3A CN109766187A (zh) | 2019-01-10 | 2019-01-10 | 网络数据包高速处理转发方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910024105.3A CN109766187A (zh) | 2019-01-10 | 2019-01-10 | 网络数据包高速处理转发方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109766187A true CN109766187A (zh) | 2019-05-17 |
Family
ID=66453875
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910024105.3A Pending CN109766187A (zh) | 2019-01-10 | 2019-01-10 | 网络数据包高速处理转发方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109766187A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110602225A (zh) * | 2019-09-19 | 2019-12-20 | 北京天地和兴科技有限公司 | 一种适用于工控环境的linux系统高效收发包方法 |
CN110855610A (zh) * | 2019-09-30 | 2020-02-28 | 视联动力信息技术股份有限公司 | 一种数据包的处理方法、装置及存储介质 |
CN111737016A (zh) * | 2020-08-17 | 2020-10-02 | 上海飞旗网络技术股份有限公司 | 一种面向云边融合系统的业务数据处理方法及装置 |
CN112437032A (zh) * | 2019-08-24 | 2021-03-02 | 北京希姆计算科技有限公司 | 数据收发装置及方法、存储介质和电子设备 |
CN113986811A (zh) * | 2021-09-23 | 2022-01-28 | 北京东方通网信科技有限公司 | 一种高性能内核态网络数据包加速方法 |
CN115103036A (zh) * | 2022-05-20 | 2022-09-23 | 中国科学院计算技术研究所 | 一种高效的tcp/ip数据报处理方法及系统 |
CN115460470A (zh) * | 2022-08-19 | 2022-12-09 | 武汉烽火技术服务有限公司 | 组播数据转发方法、装置、设备及可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020013821A1 (en) * | 1998-09-30 | 2002-01-31 | Christian D. Kasper | Method and network device for creating buffer structures in shared memory |
CN103581181A (zh) * | 2013-10-28 | 2014-02-12 | 清华大学 | 数据包捕获、处理和发送方法及系统 |
-
2019
- 2019-01-10 CN CN201910024105.3A patent/CN109766187A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020013821A1 (en) * | 1998-09-30 | 2002-01-31 | Christian D. Kasper | Method and network device for creating buffer structures in shared memory |
CN103581181A (zh) * | 2013-10-28 | 2014-02-12 | 清华大学 | 数据包捕获、处理和发送方法及系统 |
Non-Patent Citations (1)
Title |
---|
任昊哲等: ""基于DPDK的高速数据包捕获方法"", 《计算机系统应用》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112437032A (zh) * | 2019-08-24 | 2021-03-02 | 北京希姆计算科技有限公司 | 数据收发装置及方法、存储介质和电子设备 |
CN110602225A (zh) * | 2019-09-19 | 2019-12-20 | 北京天地和兴科技有限公司 | 一种适用于工控环境的linux系统高效收发包方法 |
CN110855610A (zh) * | 2019-09-30 | 2020-02-28 | 视联动力信息技术股份有限公司 | 一种数据包的处理方法、装置及存储介质 |
CN110855610B (zh) * | 2019-09-30 | 2022-12-13 | 视联动力信息技术股份有限公司 | 一种数据包的处理方法、装置及存储介质 |
CN111737016A (zh) * | 2020-08-17 | 2020-10-02 | 上海飞旗网络技术股份有限公司 | 一种面向云边融合系统的业务数据处理方法及装置 |
CN111737016B (zh) * | 2020-08-17 | 2020-11-03 | 上海飞旗网络技术股份有限公司 | 一种面向云边融合系统的业务数据处理方法及装置 |
CN113986811A (zh) * | 2021-09-23 | 2022-01-28 | 北京东方通网信科技有限公司 | 一种高性能内核态网络数据包加速方法 |
CN113986811B (zh) * | 2021-09-23 | 2022-05-10 | 北京东方通网信科技有限公司 | 一种高性能内核态网络数据包加速方法 |
CN115103036A (zh) * | 2022-05-20 | 2022-09-23 | 中国科学院计算技术研究所 | 一种高效的tcp/ip数据报处理方法及系统 |
CN115460470A (zh) * | 2022-08-19 | 2022-12-09 | 武汉烽火技术服务有限公司 | 组播数据转发方法、装置、设备及可读存储介质 |
CN115460470B (zh) * | 2022-08-19 | 2024-03-26 | 烽火通信科技股份有限公司 | 组播数据转发方法、装置、设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109766187A (zh) | 网络数据包高速处理转发方法及系统 | |
US9083539B2 (en) | Method and apparatus for multicast packet reception | |
Birrittella et al. | Intel® omni-path architecture: Enabling scalable, high performance fabrics | |
US7245627B2 (en) | Sharing a network interface card among multiple hosts | |
US8547837B2 (en) | Dynamically assigning packet flows | |
US9594842B2 (en) | Hashing algorithm for network receive filtering | |
US20040252685A1 (en) | Channel adapter with integrated switch | |
CN101340574B (zh) | 一种实现零拷贝发送流媒体数据的方法及系统 | |
US7899050B2 (en) | Low latency multicast for infiniband® host channel adapters | |
RU2436147C2 (ru) | Усовершенствованный беспроводной usb-протокол и usb-концентратор | |
US20220400147A1 (en) | Network Interface Device | |
US7461180B2 (en) | Method and apparatus for synchronizing use of buffer descriptor entries for shared data packets in memory | |
US20090077268A1 (en) | Low Latency Multicast for Infiniband Host Channel Adapters | |
US20090285235A1 (en) | System and method for offloading packet protocol encapsulation from software | |
CN107948094A (zh) | 一种高速数据帧无冲突入队处理的装置及方法 | |
CN101178694A (zh) | Intel e1000零拷贝的方法 | |
TWI257790B (en) | System for protocol processing engine | |
US10541842B2 (en) | Methods and apparatus for enhancing virtual switch capabilities in a direct-access configured network interface card | |
US7290038B2 (en) | Key reuse for RDMA virtual address space | |
US7710990B2 (en) | Adaptive low latency receive queues | |
US6839355B1 (en) | Cable modem link layer bridge | |
US9288163B2 (en) | Low-latency packet receive method for networking devices | |
CN108040132A (zh) | RapidIO转万兆网关协议实现的系统 | |
CN110765044B (zh) | 数据包传输装置及系统 | |
CN116346737A (zh) | 一种基于Virtio-net的传输优化方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190517 |