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:// ...
随机推荐
- c#数组的count()和length的区别
C# 数组中 Length 表示数组项的个数,是个属性. 而 Count() 也是表示项的个数,是个方法,它的值和 Length 一样.但实际上严格地说 Count() 不是数组的内容,而是 IEnu ...
- 九度OJ 1018:统计同成绩学生人数 (基础题)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:8807 解决:4651 题目描述: 读入N名学生的成绩,将获得某一给定分数的学生人数输出. 输入: 测试输入包含若干测试用例,每个测试用例的 ...
- 镜像回源主要用于无缝迁移数据到OSS,即服务已经在自己建立的源站或者在其他云产品上运行,需要迁移到OSS上,但是又不能停止服务,此时可利用镜像回写功能实现。
管理回源设置_管理文件_开发指南_对象存储 OSS-阿里云 https://help.aliyun.com/document_detail/31865.html 通过回源设置,对于获取数据的请求以多种 ...
- Cocos2d-X开发中国象棋《九》走棋规则
在上一节中实现了走棋,这篇博客将介绍中国象棋中的走棋规则 在写博客前先可能一下象棋的走棋规则: 1)将 将的坐标关系:横坐标相等,纵坐标相减绝对值等于1,或者纵坐标相等,横坐标相减绝对值等于1 将的特 ...
- 破解powerdesigner教程
点Tool
- swift开发学习笔记-闭包
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jiangqq781931404/article/details/32913421 文章转自:http ...
- (扫盲)jQuery extend()和jQuery.fn.extend()的区别
1.认识jQuery extend()和jQuery.fn.extend() jQuery的API手册中,extend方法挂载在jQuery和jQuery.fn两个不同对象上方法,但在jQuery内部 ...
- Ubuntu PPPoE拨号上网指定网卡
Just follow these steps: Check that the ethernet cable is properly connected Open Terminal Run sudo ...
- Python爬虫一些操作headers与cookies的便捷工具
本篇文章主要是爬虫中常用的便捷处理方法整理,转载请注明出处 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2018-08-14 13: ...
- 改善程序与设计的55个具体做法 day1
博客好久没更新了,就从这本读书笔记开始吧. 条款01: 视C++为一个语言联邦 C++可视为有四个次语言组成的: 1.C语言 2.Object-Oriented C++ (面向对象C++) 3.Tem ...