CN103617142B - 一种基于pf_ring的高速网络数据采集方法 - Google Patents

一种基于pf_ring的高速网络数据采集方法 Download PDF

Info

Publication number
CN103617142B
CN103617142B CN201310647294.2A CN201310647294A CN103617142B CN 103617142 B CN103617142 B CN 103617142B CN 201310647294 A CN201310647294 A CN 201310647294A CN 103617142 B CN103617142 B CN 103617142B
Authority
CN
China
Prior art keywords
ring
memory
network
packet
kbuffer
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
CN201310647294.2A
Other languages
English (en)
Other versions
CN103617142A (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.)
Nanjing Post and Telecommunication University
Original Assignee
Nanjing Post and Telecommunication University
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 Nanjing Post and Telecommunication University filed Critical Nanjing Post and Telecommunication University
Priority to CN201310647294.2A priority Critical patent/CN103617142B/zh
Publication of CN103617142A publication Critical patent/CN103617142A/zh
Application granted granted Critical
Publication of CN103617142B publication Critical patent/CN103617142B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种基于pf_ring的高速网络数据采集方法,该方法是基于内存池机制实现内存管理模块,用来代替pf_ring套接字中的环形缓冲区,从而实现在网络报文收发过程中都出现尽量少的内存间拷贝;本发明所述方法包括如下步骤:步骤1:在内核态注册Pf_kks协议;步骤2:为Pf_kks定义专用的套接字操作集;步骤3:创建网络设备通知链表项;步骤4:实现PF_KKS协议在核态的工作实体Ring结构;步骤5:实现内存池结构。

Description

一种基于pf_ring的高速网络数据采集方法
技术领域
本发明涉及计算机高速网络数据采集技术领域,特别涉及一种基于pf_ring的高速网络数据采集方法。
背景技术
现阶段大多数的网络安全、审计、计费产品都是以数据包捕获技术作为其工作基础的。随着网络带宽的逐渐增大,对高速网络数据采集技术要求越来越高。
传统的网络数据采集技术多数基于Libpcap函数库,通过这个函数库与内核之间进行交互,从而采集网络数据。但由于该手段在低效的网络协议架构中存在很多方面不足:数据从网卡到内核态再到用户态传输过程中存在频繁的系统调用,多次的内存拷贝,多次上下文切换的开销。导致了CPU大量时间耗费在以上的过程中。这使得系统处理网络数据的能力低下,当网络流量较大时,丢包率也逐渐上升。
现阶段,零拷贝技术,NAPI,DNA,pf_ring套接字等技术都陆续被提出来解决高速网络数据采集问题。而由于pf_ring是在零拷贝的基础上提出的一种新的解决方案,而且不必修改网卡驱动,并且同时提供了传统的Libpcap接口,可以只需要在替换Libpcap的条件下就提高高速网络数据采集的性能。具有很好的移植性。因此通用性也更强。
Pf_ring基本原理是把从网卡接受到的数据包存储在一个环状缓存中,该环状缓存提供两个接口:应用程序可以通过其中一个进行读取数据包,网卡通过另一个接口写入数据包。但是这也导致网络数据包在向外发送时,不能通过pf_ring接口。而零拷贝的原理是网络报文在收发过程中不会出现内存间的拷贝,这说明pf_ring不能算是完全的零拷贝技术,发送的数据包不能通过pf_ring接口。而本发明能够很好地解决上面的问题。
发明内容
本发明目的是在pf_ring套接字基础上,提出一种基于pf_ring的高速网络数据采集方法,该方法是基于内存池机制实现内存管理模块,用来代替pf_ring套接字中的环形缓冲区,从而实现在网络报文收发过程中都出现尽量少的内存间拷贝。
本发明解决其技术问题所采用的技术方案是:本发明提出一种基于pf_ring的高速网络数据采集方法,该方法包括如下步骤:
步骤1:在内核态注册Pf_kks协议;
步骤2:为Pf_kks定义专用的套接字操作集;
步骤3:创建网络设备通知链表项;
步骤4:实现Pf_kks协议在核态的工作实体Ring结构;
步骤5:实现内存池结构。
在本发明中收发网络数据包时,当网卡通过中断接收到数据包,调用net_rx_action()处理分组,在netif_receive_skb()函数中会将数据包派发到PacketRecv()分组处理例程中,从而实现接收数据截获;发送数据包通过dev_queue_xmit()将自己创建的skb从指定网卡上发送出去。在本发明中创建链表项后可将链表项插入到内核网络设备通知链表中,当系统中的网络设备发生变化时(UP、DOWN等),Pf_kks接收相应消息,通过注册的句柄函数进行相应的处理。在本发明中创建链表项后可将链表项插入到内核网络设备通知链表中,当系统中的网络设备发生变化时(UP、DOWN等),Pf_kks接收相应消息,通过注册的句柄函数进行相应的处理。在本发明中改变了原有pf_ring总的环形缓冲区,实现了内存池结构,并且有效的利用了内存。
本发明提出一种基于pf_ring的高速网络数据采集方法,该方法针对由于pf_ring套接字中的环状缓存只提供应用程序读取数据包与网卡写入数据包的两个接口,导致网络数据包发送过程中不能通过pf_ring接口。本发明对pf_ring套接字中的环状缓存进行了修改,引进了内存池的机制,保证网络数据在收发过程中都可以使用改进的pf_ring接口。
一、体系结构
图1给出了改进后的pf_ring套接字的体系结构。命名为Pf_kks。该系统被注册成一个协议模块,通过用户态程序打开一个套接字将该协议绑定到特定的网络设备,协议从网卡驱动收发数据包,所有的数据包将会落地到模块申请的缓冲内存池中,然后被有序整理成会话,对用户态程序输出会话流。
下面给出几个主要部分的说明:
KksProtoHook:主要是在内核队列中注册Hook,获取数据帧。
Kbuffer Pool:本发明最主要的部分。实现了内存池机制。当网络数据流量通过硬件落地到系统中时,实际上是一个个的数据帧。本发明采用内存池的机制,让这些数据帧一个个不连续的存储在已经划分好的内存池中。
二、主要技术方案
内存池:图2给出了内存池原理的示意图。它主要是将一整块内存划分为大小相等的内存块,并将这些内存块链成链表,成为可用内存链表。在申请内存的时候取出可用内存链表的第一项返回给申请者。在释放内存的时候将内存块链回可用内存链表即可。在实际使用的时候,尤其是开发阶段,在每个内存块的头部保留一些控制信息和Cookie信息,在内存块的尾部也保留一些Cookie信息,在申请和释放内存的时候检查这些信息可以有效的发现内存重复释放、内存溢出、释放指针错误等问题。
Kbuffer结构:该结构体主要提出用来控制每一个收到的原始网络数据包。面对跨越用户态和核态的环境中,单纯的指针和链表结构不再适用(核态和用户态的虚拟地址不能通用)。为了解决这个问题,参考Linux系统中sk_buff的结构,提出了Kbuffer的结构体来存储网络数据包。Kbuffer是从共享内存池中分配,以便实现核态和用户态的共享。并且Kbuffer结构体中不使用指针来处理数据中的协议首部,而改为使用首部偏移量加长度再配合上处理宏来解决协议首部识别和处理的任务。图3给出了Kbuffer结构示意图。实际上,一个完整的Kbuffer是由两部分组成的:Kbuffer数据结构和一块对应的内存块。这样设计的目的是为了提高内存块的使用效率。仅当网络流量首次落地到本系统中,才在划分的内存块中进行一次拷贝的操作;其他所有在系统中的内存操作,实际上仅仅只是对Kbuffer数据结构这个控制块进行操作,所有的创建、拷贝、删除操作落到物理的内存块中,仅仅是对引用计数的变化。这样就可以有效的减少重复拷贝,增加内存使用效率,提高系统的实时性。
附图说明
图1是本发明的Pf_kks体系结构。
图2是本发明的内存池原理示意图。
图3是本发明的Kbuffer结构示意图。
图4是本发明的方法流程图。
具体实施方式
下面通过结合说明书附图,进一步说明本发明的技术方案。
实施例1
如图4所示,本发明提出一种基于pf_ring的高速网络数据采集方法,该方法包括如下步骤:
步骤1:在内核态注册Pf_kks协议;
步骤2:为Pf_kks定义专用的套接字操作集;
步骤3:创建网络设备通知链表项;
步骤4:实现Pf_kks协议在核态的工作实体Ring结构;
步骤5:实现内存池结构。
在本发明中收发网络数据包时,当网卡通过中断接收到数据包,调用net_rx_action()处理分组,在netif_receive_skb()函数中会将数据包派发到PacketRecv()分组处理例程中,从而实现接收数据截获;发送数据包通过dev_queue_xmit()将自己创建的skb从指定网卡上发送出去。在本发明中创建链表项后可将链表项插入到内核网络设备通知链表中,当系统中的网络设备发生变化时(UP、DOWN等),Pf_kks接收相应消息,通过注册的句柄函数进行相应的处理。在本发明中创建链表项后可将链表项插入到内核网络设备通知链表中,当系统中的网络设备发生变化时(UP、DOWN等),Pf_kks接收相应消息,通过注册的句柄函数进行相应的处理。在本发明中改变了原有pf_ring总的环形缓冲区,实现了内存池结构,并且有效的利用了内存。
本发明提出一种基于pf_ring的高速网络数据采集方法,该方法针对由于pf_ring套接字中的环状缓存只提供应用程序读取数据包与网卡写入数据包的两个接口,导致网络数据包发送过程中不能通过pf_ring接口。本发明对pf_ring套接字中的环状缓存进行了修改,引进了内存池的机制,保证网络数据在收发过程中都可以使用改进的pf_ring接口。
一、体系结构
图1给出了改进后的pf_ring套接字的体系结构。命名为Pf_kks。该系统被注册成一个协议模块,通过用户态程序打开一个套接字将该协议绑定到特定的网络设备,协议从网卡驱动收发数据包,所有的数据包将会落地到模块申请的缓冲内存池中,然后被有序整理成会话,对用户态程序输出会话流。
下面我们给出几个主要部分的说明:
KksProtoHook:主要是在内核队列中注册Hook,获取数据帧。
Kbuffer Pool:本发明最主要的部分。实现了内存池机制。当网络数据流量通过硬件落地到系统中时,实际上是一个个的数据帧。本发明采用内存池的机制,让这些数据帧一个个不连续的存储在已经划分好的内存池中。
二、主要技术方案
内存池:图2给出了内存池原理的示意图。它主要是将一整块内存划分为大小相等的内存块,并将这些内存块链成链表,成为可用内存链表。在申请内存的时候取出可用内存链表的第一项返回给申请者。在释放内存的时候将内存块链回可用内存链表即可。在实际使用的时候,尤其是开发阶段,在每个内存块的头部保留一些控制信息和Cookie信息,在内存块的尾部也保留一些Cookie信息,在申请和释放内存的时候检查这些信息可以有效的发现内存重复释放、内存溢出、释放指针错误等问题。
Kbuffer结构:该结构体主要提出用来控制每一个收到的原始网络数据包。面对跨越用户态和核态的环境中,单纯的指针和链表结构不再适用(核态和用户态的虚拟地址不能通用)。为了解决这个问题,参考Linux系统中sk_buff的结构,提出了Kbuffer的结构体来存储网络数据包。Kbuffer是从共享内存池中分配,以便实现核态和用户态的共享。并且Kbuffer结构体中不使用指针来处理数据中的协议首部,而改为使用首部偏移量加长度再配合上处理宏来解决协议首部识别和处理的任务。图3给出了Kbuffer结构示意图。实际上,一个完整的Kbuffer是由两部分组成的:Kbuffer数据结构和一块对应的内存块。这样设计的目的是为了提高内存块的使用效率。仅当网络流量首次落地到本系统中,才在划分的内存块中进行一次拷贝的操作;其他所有在系统中的内存操作,实际上仅仅只是对Kbuffer数据结构这个控制块进行操作,所有的创建、拷贝、删除操作落到物理的内存块中,仅仅是对引用计数的变化。这样就可以有效的减少重复拷贝,增加内存使用效率,提高系统的实时性。
实施例2
假设有一台装有Linux系统的PC机,要实现Pf_kks这一体系架构,那么具体实施方式为:(1)协议的注册
模仿pf_ring,将本系统注册成为一个网络协议模块,以便成为一个通用的系统,不受硬件限制。当前,内核最多支持31个协议域(0为未指定,32为MAX)。而当前的定义中还有27,28,30为空(详见linux/socket.h),故对于协议号作如下的申明:#define Pf_kks27/*The protocol number of Kakashi*/
内核中,结构体net_proto_family用于表示一个协议域,而全局数组变量staticstruct net_proto_family*net_families[NPROTO]是一个有32项的数组,用于保存当前内核中所有已注册的协议域,函数sock_register用于把一个协议域注册到内核中,即把一个协议域跟net_families数组中的某一项相关联。为本系统的模块定义如下协议域:
调用sock_register()函数将KKS协议域注册到内核中。
proto结构体表示了一个传输层协议绑定的操作集,比如对于IPPROTO_TCP,它就是tcp_prot,对于IPPROTO_UDP,它就是udp_prot。本系统中,为KKS定义了自己的操作集:
调用proto_register()函数将KksProto协议操作集注册到内核中。
在OSI七层模型中,INET和BSD套接字之间的接口通过Internet地址族套接字操作集实现,这些操作集实际是一组协议的操作例程,在include/linux/net.h中定义为proto_ops。为KKS定义如下的套接字操作集:
创建网络设备通知链表项,插入到内核网络设备通知链表中。当系统中的网络设备发生变化时(UP、DOWN等),Pf_kks接收相应消息,通过注册的句柄函数进行相应的处理。
其中主要要处理的两个消息为NETDEV_REGISTER和NETDEV_UNREGISTER。
当模块初始化时,系统就会通知表链来识别当前的网络设备,并在模块中创建可用设备链(KksAwareDeviceList),为协议后续使用网络设备做准备。
为Pf_kks协议设定了三种工作模式:
1、transparent_mode=0
数据包通过标准linux接口来接收,所有的驱动都可以使用这种模式。
2、transparent_mode=1
数据包使用拷贝方式,同时由Pf_kks和标准linux接口来接收,需要特定网卡驱动。
3、transparent_mode=2
数据包仅拷贝到Pf_kks,不再经过标准linux接口,需要特定网卡驱动。
(2)Ring的使用
参考Pf_ring关于数据采集部分的设计思想,本系统中提出了一个Ring环的结构,作为从网络设备驱动采集数据、协议层会话重组和用户态应用层协议数据流交互的载体。
每一个Ring环就是一个Pf_kks协议在核态的工作实体,它通过从用户态打开标准原始套接字来创建(socket函数),通过套接字的绑定操作(bind函数)将打开的Ring绑定到位于可用设备链中的某一指定设备(如eth0、wlan0等)。
(3)内存池结构的实现
每一个Ring环都会维护一个内存池结构,分配用于存储数据包的内存块。
其中内存池控制块结构如下:
内存分片首部结构如下:
对于模式transparent=0,创建一个对象struct packet_type并将其Hook到协系统的协议栈中(dev_add_pack函数和dev_remove_pack函数)。将其中的func句柄设置为函数PakcetRecv(),type设置为ETH_P_ALL(以便处理所有协议的二层数据帧)。
这时,在传统方式接收网络数据包时,当网卡通过中断接收到数据包,调用net_rx_action()处理分组,在netif_receive_skb()函数中会将数据包派发到我们的PacketRecv()分组处理例程中,从而实现接收数据截获;发送数据包通过dev_queue_xmit()将自己创建的skb从指定网卡上发送出去。

Claims (4)

1.一种基于pf_ring的高速网络数据采集方法,其特征在于,所述方法包括如下步骤:
步骤1:在内核态注册Pf_kks协议;
步骤2:为Pf_kks定义专用的套接字操作集;
步骤3:创建网络设备通知链表项;
步骤4:实现Pf_kks协议在核态的工作实体Ring结构;
步骤5:实现内存池结构;
所述内存池:是将一整块内存划分为大小相等的内存块,并将这些内存块链成链表,成为可用内存链表;在申请内存的时候取出可用内存链表的第一项返回给申请者;在释放内存的时候将内存块链回可用内存链表即可;在实际使用的时候,即开发阶段,在每个内存块的头部保留一些控制信息和Cookie信息,在内存块的尾部也保留一些Cookie信息,在申请和释放内存的时候检查这些信息能够发现内存重复释放、内存溢出、释放指针错误;
Ring结构包括:标志位(Flags),网络流方向(Direction),Master Socket,Ring内存(Ring Memory),核心态内存(Memory Pool In Kernel),其中标志位(Flags)标识了Ring环的状态与Ring环的id号;网络流方向(Direction)告诉设备是输出还是输入网络流;MasterSocket标识了主Socket;Ring内存(Ring Memory)标识了Ring结构在系统内存中的大小,长度;核心态内存(Memory Pool In Kernel)标识了指向Ring结构在内核态中的内存;
Kbuffer结构:用来控制每一个收到的原始网络数据包,面对跨越用户态和核态的环境中,单纯的指针和链表结构不再适用,即核态和用户态的虚拟地址不能通用;
采用Kbuffer结构存储网络数据包,Kbuffer是从共享内存池中分配,以便实现核态和用户态的共享,并且Kbuffer结构中不使用指针来处理数据中的协议首部,而改为使用首部偏移量加长度再配合上处理宏来解决协议首部识别和处理的任务;
所述Kbuffer是由两部分组成的,即:Kbuffer结构和一块对应的内存块;仅当网络流量首次落地到本系统中,才在划分的内存块中进行一次拷贝的操作,其他所有在系统中的内存操作,实际上仅仅只是对Kbuffer结构这个控制块进行操作,所有的创建、拷贝、删除操作落到物理的内存块中,仅仅是对引用计数的变化。
2.根据权利要求1所述的一种基于pf_ring的高速网络数据采集方法,其特征在于:在所述方法中收发网络数据包时,当网卡通过中断接收到数据包,调用net_rx_action()处理分组,在netif_receive_skb()函数中会将数据包派发到PacketRecv()分组处理例程中;发送数据包通过dev_queue_xmit()将自己创建的skb从指定网卡上发送出去。
3.根据权利要求1所述的一种基于pf_ring的高速网络数据采集方法,其特征在于:在所述方法中创建链表项后可将链表项插入到内核网络设备通知链表中,当系统中的网络设备发 生变化时,Pf_kks接收相应消息,通过注册的句柄函数进行相应的处理。
4.根据权利要求1所述的一种基于pf_ring的高速网络数据采集方法,其特征在于:在所述方法中改变了原有pf_ring总的环形缓冲区。
CN201310647294.2A 2013-09-09 2013-12-04 一种基于pf_ring的高速网络数据采集方法 Active CN103617142B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310647294.2A CN103617142B (zh) 2013-09-09 2013-12-04 一种基于pf_ring的高速网络数据采集方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN201310407788.3 2013-09-09
CN2013104077883 2013-09-09
CN201310407788 2013-09-09
CN201310647294.2A CN103617142B (zh) 2013-09-09 2013-12-04 一种基于pf_ring的高速网络数据采集方法

Publications (2)

Publication Number Publication Date
CN103617142A CN103617142A (zh) 2014-03-05
CN103617142B true CN103617142B (zh) 2017-03-15

Family

ID=50167845

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310647294.2A Active CN103617142B (zh) 2013-09-09 2013-12-04 一种基于pf_ring的高速网络数据采集方法

Country Status (1)

Country Link
CN (1) CN103617142B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104731735A (zh) * 2015-03-24 2015-06-24 浪潮集团有限公司 一种利用引用计数实现高性能环回设备的方法
CN110505244B (zh) * 2019-09-19 2020-06-02 南方电网数字电网研究院有限公司 远程隧道访问技术网关以及服务器
CN110830385A (zh) * 2019-09-25 2020-02-21 上海数荃数据科技有限公司 一种捕包处理方法、网络设备、服务器及存储介质
CN111953568B (zh) * 2020-08-19 2022-04-08 杭州迪普科技股份有限公司 丢包信息管理方法与装置
CN113422771A (zh) * 2021-06-22 2021-09-21 北京华圣龙源科技有限公司 威胁预警方法和系统
CN113438241B (zh) * 2021-06-25 2024-02-13 佳缘科技股份有限公司 一种数据传输方法及系统
CN114189462B (zh) * 2021-12-08 2024-01-23 北京天融信网络安全技术有限公司 一种流量采集方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047323A (en) * 1995-10-19 2000-04-04 Hewlett-Packard Company Creation and migration of distributed streams in clusters of networked computers
CN1925465A (zh) * 2006-09-22 2007-03-07 中国科学院计算技术研究所 基于共享内存实现的数据包捕获方法
CN101135980A (zh) * 2006-08-29 2008-03-05 飞塔信息科技(北京)有限公司 一种基于Linux操作系统实现零拷贝的装置和方法
CN101841470A (zh) * 2010-03-29 2010-09-22 东南大学 一种基于Linux的底层数据包的高速捕获方法
CN102156662A (zh) * 2011-02-14 2011-08-17 大唐移动通信设备有限公司 一种数据处理方法和设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047323A (en) * 1995-10-19 2000-04-04 Hewlett-Packard Company Creation and migration of distributed streams in clusters of networked computers
CN101135980A (zh) * 2006-08-29 2008-03-05 飞塔信息科技(北京)有限公司 一种基于Linux操作系统实现零拷贝的装置和方法
CN1925465A (zh) * 2006-09-22 2007-03-07 中国科学院计算技术研究所 基于共享内存实现的数据包捕获方法
CN101841470A (zh) * 2010-03-29 2010-09-22 东南大学 一种基于Linux的底层数据包的高速捕获方法
CN102156662A (zh) * 2011-02-14 2011-08-17 大唐移动通信设备有限公司 一种数据处理方法和设备

Also Published As

Publication number Publication date
CN103617142A (zh) 2014-03-05

Similar Documents

Publication Publication Date Title
CN103617142B (zh) 一种基于pf_ring的高速网络数据采集方法
CN105577567B (zh) 基于Intel DPDK的网络数据包并行处理方法
CN101841470B (zh) 一种基于Linux的底层数据包的高速捕获方法
CN103647807B (zh) 一种信息缓存方法、装置和通信设备
US8279885B2 (en) Lockless processing of command operations in multiprocessor systems
US8005022B2 (en) Host operating system bypass for packets destined for a virtual machine
US7788411B2 (en) Method and system for automatically reflecting hardware resource allocation modifications
CN106850565B (zh) 一种高速的网络数据传输方法
CN101267361B (zh) 一种基于零拷贝技术的高速网络数据包捕获方法
EP3503507B1 (en) Network interface device
US20090003204A1 (en) Lockless Bandwidth Management for Multiprocessor Networking Devices
García-Dorado et al. High-performance network traffic processing systems using commodity hardware
CN103414535B (zh) 数据发送方法和数据接收方法及相关装置
CN102638487B (zh) 大型遥测地震仪高性能数据传输方法
CN108900327A (zh) 一种基于dpdk的天文数据采集和实时处理方法
CN101178694A (zh) Intel e1000零拷贝的方法
US10686731B2 (en) Network interface device
CN107911237A (zh) 一种基于dpdk的用户空间内数据包快速检测方法
CN102334112A (zh) 用于虚拟机网络的方法和系统
CN104333533B (zh) 一种用于工业控制系统网络的数据包零拷贝获取方法
CN101873337A (zh) 一种基于rt8169千兆网卡和Linux操作系统的零拷贝数据捕获技术
KR20130087026A (ko) 전기 통신 네트워크 애플리케이션들을 위한 잠금 없는 버퍼 관리 방식
Rizzo Revisiting Network I/O APIs: The netmap Framework: It is possible to achieve huge performance improvements in the way packet processing is done on modern operating systems.
US20230127722A1 (en) Programmable transport protocol architecture
Li et al. The comparison and verification of some efficient packet capture and processing technologies

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant