PF_RING实现分析(3)

简介: 刚刚接触PF_RING,学习了,O(∩_∩)O有个问题请教一下九贱前辈:内核中的PACKET_MMAP跟PF_RING有什么不同呢?感觉PACKET_MMAP跟transparent_mode=0时的PF_RING原理上是一样的( ⊙ o ⊙ )啊...?

刚刚接触PF_RING,学习了,O(∩_∩)O

有个问题请教一下九贱前辈:内核中的PACKET_MMAP跟PF_RING有什么不同呢?

感觉PACKET_MMAP跟transparent_mode=0时的PF_RING原理上是一样的( ⊙ o ⊙ )啊...?

_
取包的方式不同,最大的不同在于pf_ring用户态拿包时,不用进过系统调用的传递拷贝,而是与内核共享内存,以提高效率。

还有一个问题请教九贱前辈->

在(NAPI方式)和(非NAPI方式)下,网络数据从富贵论坛(网卡)到达(应用层程序),分别要经过哪几个缓冲区,需要几次内存拷贝啊...?

最近在分析网络数据包接收流程,看了好多文章,感觉说的都不是很明确,现在自己脑子里也是一片混乱啊!急待九贱前辈指点...!O(∩_∩)O谢谢

——————————————————————
不好意思,这个没有总结过,也记不清socket层是否存在拷贝了。所以只记得用户层取包的一次拷贝,嘿嘿。

文章来源CU社区:PF_RING实现分析

目录
相关文章
|
4月前
|
Linux Windows
[收藏] Ring0 Call Ring3
[收藏] Ring0 Call Ring3
|
存储
av_register_all分析
av_register_all分析
107 0
av_register_all分析
|
8月前
|
编译器 C++
offsetof宏的使用、模拟实现及 (size_t)&(((struct_type*)0)->mem_name)的解释
offsetof宏的使用、模拟实现及 (size_t)&(((struct_type*)0)->mem_name)的解释
AVPacket结构体内几个变量分析
AVPacket结构体内几个变量分析
66 0
AVPacket结构体内几个变量分析
|
NoSQL Shell
[PWN][高级篇]利用ROP-ret2Syscall突破NX保护(下)
[PWN][高级篇]利用ROP-ret2Syscall突破NX保护
146 0
[PWN][高级篇]利用ROP-ret2Syscall突破NX保护(下)
|
安全 Shell
[PWN][高级篇]利用ROP-ret2Syscall突破NX保护(上)
[PWN][高级篇]利用ROP-ret2Syscall突破NX保护
226 0
[PWN][高级篇]利用ROP-ret2Syscall突破NX保护(上)
|
存储 Linux API
PF_RING实现分析(1)
内核版本:Linux 2.6.30.9 PF_RING版本:4.1.0 最近看了一个PF_RING的实现,看了个大概,发上来大家讨论讨论,共同学习。 一、什么是PF_RING PF_RING是一个第三方的内核数据包捕获接口,类似于libpcap。 二、为什么需要PF_RING 一切为了效率,按照其官方网站上的测试数据,在Linux平台之上,其效率至少高于libpcap 50% - 60%,甚至是一倍。更好的是,PF_RING提供了一个修改版本的libpcap,使之建立在PF_RING接口之上。这样,原来使用libpcap的程序,就可以自然过渡了。
734 0
|
网络协议 Linux API
PF_RING实现分析(2)
4、mmap操作 用户态的接下来调用: ring->buffer = (char *)mmap(NULL, PAGE_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, ring->fd, 0); 复制代码 进行内存映射。 同样地,内核调用相应的ring_mmap进行处理。 Ring选项结构通过ring_sk宏与sk 建立关联 struct ring_opt *pfr = ring_sk(sk); 复制代码
436 0
|
网络协议 Linux 缓存
struct s_mbuf与struct sk_buff
struct s_mbuf与struct sk_buff本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。
1345 0
|
缓存 Unix Java
struct sk_buff与socket
struct sk_buff与socket作者:gfree.wind@gmail.com 原文:http://blog.chinaunix.net/u3/116859/showart.php?id=2441552 在Linux2.6中,struct sk_buf承担了socket的输入输出的传输缓存的任务。
1424 0