PF_RING packet overwrites

最近在用 PF_RING 抓包过程中,发现个灵异的现象,高流量丢包时, 经常会出现正在处理的包的内容被覆盖。开始,怀疑是不是自己程序有地方越界写了,后来发现,如果自己拷贝一份,然后处理拷贝的那份,永远都不会发生覆盖现象。后来通过跟踪发现是,PF_RING 的共享内存 RING 区域对尾部处理有异常。因为 RING 尾部空间不够 一个 slot_len 大小时候, insert_off 会直接从 RING 头开始,所以尾部会有最多 slot_len - 1 的无用空间。

给 PF_RING 提交了一个 pull request,经过2周,已经接受,见 commit

时间: 2024-11-06 03:52:46

PF_RING packet overwrites的相关文章

Method of packet transmission from node and content owner in content-centric networking

A method of transmitting a content reply packet from a content owner in content-centric networking (CCN) includes determining a caching capability value threshold (CCVth) for determining a candidate node for caching a content based on a policy of the

关于PF_RING/Intel 82599/透明VPN的一些事

接近崩溃的边缘,今天这篇文章构思地点在医院,小小又生病了,宁可吊瓶不吃药,带了笔记本却无法上网,我什么都不能干,想了解一些东西,只能用3G,不敢 开热点,因为没人给我报销流量,本周末我只有一天时间,因为下雨,我还有一个晚上.了解了PF_RING之后,我迫切希望做一个实验,于是跑回家验证后再 回来. 事情的起因是这样的. 一共有4个问题 1.关于一个网络加速卡 前 些日子,接触到一款网络加速卡,插在PCIe插槽,卡上运行独立的Linux系统,通过PCIe和主机通信.这块卡号称其特点在于处理抓包的性

pf_ring DNA接收流程代码分析

经过一两个月的学习,对pf_ring DNA的内核部分有了一些认识,本文侧重pf_ring对ixgbe的改动分析. 先说一说接收流程吧,流程如下: 其中,硬中断处理函数是ixgbe_msix_clean_rings( );软中断处理函数是net_rx_action( ). pf_ring对ixgbe的改动主要在ixgbe_poll()和ixgbe_clean_rx_irq()中. 在ixgbe_poll( )中遍历每个队列并轮询处理数据包,代码如下. int ixgbe_poll(struct

Reading Fast Packet Processing A Survey

COMST 2018 主要内容 这是一篇有关快速包转发的综述,先介绍了包转发的有关基础知识和背景,具体介绍了包转发的主流方法,对这些方法进行了细致详尽的比较,最后介绍了最新的方法和未来的研究方向. 包处理包括Fast Path 和Slow Path,前者用于包转发和包头处理,后者主要用于管理.错误控制.维护. 主要的方法有三种:纯软件.纯硬件.软硬结合. 纯软件方法主要在软件层面(零拷贝.批处理.并行性.用户/内核空间)进行性能优化,性能不足的主要是因为网络协议栈架构的不足. 纯硬件方法性能高但

PF_RING Libzero中使用HugePage

Libzero中使用HUGEPAGES Libzero使用Hugepage来增加报文处理使用的内存大小.如果使用PF_RING ZC,它是必选的. 注:Hugepage在Intel DPDK开发中也是必选的!! 本文档描述如何在你的系统中启用hugepage. 快速设置 $ echo 1024 >/sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages $ mount -t hugetlbfs nodev/mnt/huge 完整过程 通常Lin

Packet 和 Frame

一般说来,数据链路层发出的数据包称为frame,地址是链路层的地址,如mac地址:网络层发出的数据包称为packet,地址是网络层地址,如ip地址:传输层发出的数据包称为segment,地址是传输层地址,如TCP的端口号. 数据的封装过程: 1.data 2.segment 3.packet 4.frame 5.bit 对应的协议: 1.application-session (Represen layer is in the middle) layer 2.transprot layer 3.

com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1169 > 1024)

### Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1169 > 1024). You can change this value on the server by setting the max_allowed_packet' variable. ; SQL []; Packet for query is too large (1169 > 1024). You can change

Cisco Packet Tracer做单臂路由的过程

Cisco Packet Tracer版本:6.0.0.0045 单臂路由 VLAN规划 switch 0上配置:Switch>enSwitch(config)#vlan 2 #创建vlan2Switch(config)#vlan 3 #创建vlan3Switch(config-vlan)#exitSwitch(config)#exitSwitch#show vlan #查看vlan Switch(config)#interface range f0/2-f0/4 #range可以批量选择端口S

虚拟机中MySQL连接问题:Lost connection to MySQL server at 'reading initial communication packet, system error: 0 以及 host is not allowed to connect mysql

环境:在VirtualBox中安装了Ubuntu虚拟机,网络使用了NAT模式,开启了端口转发. 局域网内其他计算机访问虚拟机中的MySQL Server出现两个问题: Lost connection to MySQL server at 'reading initial communication packet, system error: 0 以及 host is not allowed to connect mysql 1.解决Lost connection to MySQL server