dpdk数据包捕获技术笔记1
1 高效捕包技术的重要性
高性能系统需要在很短的时间内,成功的收集和处理大量的数据,目标系统的实时数据需要被收集,管里和控制。
2 传统的数据包捕获机制
Inter指出,影响数据包捕获性能主要原因是系统开销,内存访问和tcp/ip协议栈三个方面,另外系统开销也是非常大的影响因素。另外出现大量的丢包现像的主要原因还有频繁的网络中断,系统调用和多次内存的拷贝。
(1)BPF数据包捕获机制
A:数据链路层的一种原始接口,提供原始链路层封包的过滤和转发。
B:它的实现分为两部分。
一部分是数据包的过滤,
根据过滤规则决定数据包的接受和丢弃。通过内核的NetFilter模块实现,通过用户空间的itables控制。
另一部分是数据包的转发
在链路层捕获数据包,然后发给数据包过滤部分
缺陷:
虽然过滤一部分数据包在一定的程度上降低了系统的开销,提高了效率。但它的捕获和过滤都是在linux内核中完成。这样一来只要linux内核一更新,它也需要更新,降低了它的可移植性和通用性。
(2) libpcap数据包捕获机制
先看看哪些应用是通过这个库写出来的吧,snort,tcpdump。wireshark用的winpcap。可见还是非常的强大的,它同样支持BPF信息过滤机制
libpcap工作机制:
A:本地网卡设置为混杂模式(这种模式能够接受所有流经本机所在网络得数据包)
B:数据包经过BPF过滤
C:交给linux内核层数据包缓冲区,用户层应用程序通过系统调用将数据包从内核缓冲区取出并放入用户空间内存区
缺陷:
数据包经过了linux得内核网络协议栈,从网卡到用户空间的传递过程,存在多次的拷贝和中断相应,消耗大量得cpu时间片,降低系统整体的数据分析能力。
(3)pf_ring数据包捕获机制
在linux内核层添加了一种新的带缓存得协议族,结合网卡得内存访问模式DMA以及中断模式NAPI技术,减少cpu得中断次数。位于用户层得应用程序通过mmap技术直接访问linux内核层得网络数据包,减少数据拷贝。它是一种独立模块的形式,能够进行模块的卸载和加载。
缺陷:
数据从网卡内存缓存区到内核sk_buf数据存储,进行一次拷贝,并没有实现真正意义得零拷贝。f另外它得预处理和数据包的捕获仍然在内核层完成。
3 DPDK
(1)dpdk的四个技术点
A:hugetlbpage:通过大内存提高内存使用效率
B:UIO:驱动的很少一部分在内核中完成,在用户空间完成大部分功能。
C:cpu affinity:将控制面线程以及各个数据面线程绑定在不同的cpu核
D:zero copy:
(2) 数据包捕获基本流程
rte_eal_init对dpdk参数的处理,初始化EAL环境
inti_mbuf_pools:初始化mbuf和pool队列
init_port:初始化端口配置
ret_burst_rx_burst:从端口接收数据包,如果是多端口可以for循环抓包
通过自定义的函数对每个数据包的初步处理并进行队列的分发
内容出自论文基于dpdk的高效数据不获技术分析与应用 计算机工程与科学 第38卷第11期
dpdk数据包捕获技术笔记1的更多相关文章
- 基于DPDK的高效数据包捕获技术分析与应用
被NFV的论文折磨了两天,今天上午看了两篇DPDK的综述. 传统的包捕获机制 1. BPF 两个组成部分:转发部分和过滤部分. 转发部分负责从链路层提取数据包并转发给过滤部分. 过滤部分根据过滤规则, ...
- 基于tcpdump的Android智能移动终端数据包捕获完整解决方案
如何在Android智能手机上捕获数据包? 本文由CSDN-蚍蜉撼青松[主页:http://blog.csdn.net/howeverpf]原创,转载请注明出处! 当前Android系统越来越流行,无 ...
- Wireshark入门与进阶---数据包捕获与保存的最基本流程
Wireshark入门与进阶系列(一) "君子生非异也.善假于物也"---荀子 本文由CSDN-蚍蜉撼青松 [主页:http://blog.csdn.net/howeverpf]原 ...
- Linux 中的网络数据包捕获
Linux 中的网络数据包捕获 Ashish Chaurasia, 工程师 简介: 本教程介绍了捕获和操纵数据包的不同机制.安全应用程序,如 VPN.防火墙和嗅探器,以及网络应用程序,如路由程序,都依 ...
- Bluetooth数据包捕获
目录 1. 前提 2. 开启功能 3. 抓包 这里介绍一种在Android上捕获蓝牙数据包的方法 1. 前提 首先你要有一部Android手机 然后你的Android系统版本要在4.4及以上 我没有做 ...
- 【转】Bluetooth数据包捕获
原文网址:http://www.cnblogs.com/hzl6255/p/3887013.html 这里介绍一种在Android上捕获蓝牙数据包的方法 1. 前提 首先你要有一部Android手机 ...
- linux简单的数据包捕获分析
有时我们会遇到一些问题,需要捕捉数据包分析,当手头有没有专业的抓图工具,您可以使用tcpdump相反,看看(一般版本附带这个工具) 比如,我们要分析eth0与接口192.168.7.188 这个对象I ...
- OVS+DPDK Datapath 包分类技术
本文主体内容译于[DPDK社区文档],但并没有逐字翻译,在原文的基础上进行了一些调整,增加了对TSS分类器的详细阐述. 1. 概览 本文描述了OVS+DPDK中的包分类器(datapath class ...
- 使用 gopacket 进行数据包捕获,注入和分析
原文链接:https://www.devdungeon.com/content/packet-capture-injection-and-analysis-gopacket 接口文档:https:// ...
随机推荐
- 初学shell,今天遇到由wget下载到本地的网页源代码的乱码问题,无聊的写了一个转码的脚本
今天用wget想下载文件,结果下载了一堆本地的index.html文件,一查看全是乱码,然后百度了一下,网页的编码格式大概有三种: 1.utf-8 2.gb2312 3.gbk 要在网页源码中的< ...
- ThreadLocal的简单使用
package com.thread; public class ThreadLocalTest { public static void main(String[] args) { final Pe ...
- iOS应用上架报错解决
ERROR ITMS-90087: "Unsupported Architectures. The executable for LiveStorage.app/Frameworks/Spe ...
- 修正IE6中FIXED不能用的办法,转载
.fixed-top /* 头部固定 */{position:fixed;bottom:auto;top:0px;} .fixed-bottom /* 底部固定 */{position:fixed;b ...
- HDU - 1260 Tickets 【DP】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1260 题意 有N个人来买电影票 因为售票机的限制 可以同时 卖一张票 也可以同时卖两张 卖两张的话 两 ...
- Machine Learning No.8: Clusting
1. K-means algorithm 2. K-means optimization objective 3. Random initialization
- Linux线程的几种结束方式
Linux创建线程使用 int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) ...
- 算法(Algorithms)第4版 练习 1.3.23 1.3.22
1.3.23 When it comes time to update t.next, x.next is no longer the original node following x, but i ...
- 蓝天白云大草原风景PSD背景素材
蓝天白云大草原风景PSD源文件背景素材,蓝天白云,大草原,风景,背景素材,自然风景,草原景色,绿色清新背景 地址:http://www.huiyi8.com/psd/
- openfire性能调优
1. 参考 http://blog.csdn.net/foxisme2/article/details/7521139 http://blog.csdn.net/foxisme2/article/de ...